Ho un'applicazione che è un semplice networked knock-knock joke app. Ho incorporato alcuni Log4J (versione 2) che ci loggavano. Ecco la classe di server:Come posso rendere utile l'accesso a Apache Log4J in questa applicazione?
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.Level;
import java.net.*;
import java.io.*;
public class MessageResponseServer extends Thread /* added in the T just now*/{ /* REPLACED */
private static final Logger logger = LogManager.getLogger("MessageResponseServer");
logger.info("MessageResponseServer.java : INFO message");
public static void main(String[] args) throws IOException {
logger.debug("MessageResponseServer.java : DEBUG message");
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(4444);
} catch (IOException e) {
System.err.println("Could not listen on port: 4444.");
logger.fatal("MessageResponseServer.java : FATAL message - Could not listen on port: 4444.");
System.exit(1);
}
Socket clientSocket = null;
try {
clientSocket = serverSocket.accept();
logger.debug("MessageResponseServer.java : , debug message");
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
String inputLine, outputLine;
MessageResponseProtocol mrp = new MessageResponseProtocol(); /* REPLACED */
outputLine = mrp.processInput(null);
out.println(outputLine);
while ((inputLine = in.readLine()) != null) {
outputLine = mrp.processInput(inputLine);
out.println(outputLine);
if (outputLine.equals("Bye."))
logger.debug("MessageResponseServer.java : , Exiting. DEBUG Message");
break;
}
out.close();
in.close();
clientSocket.close();
serverSocket.close();
}
}
Ed il seguente è il file XML:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="MyFile" fileName="OutputLogFile.log" immediateFlush="false" append="true">
<PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="ALL">
<Appender-Ref ref="Console"/>
<Appender-Ref ref="MyFile"/>
</Root>
</Loggers>
</Configuration>
Quello che mi piacerebbe fare è quello di capire come fare la registrazione un po 'più utile. Aggiungete speciali istruzioni if
per decidere se registrare qualcosa (se l'utente inserisce "esci", posso creare un registro specifico).
C'è forse un modo per includere le metriche di prestazione nel logging? Questo sarebbe davvero utile per me. Il mio obiettivo è che il codice mostri qualcosa che possa aiutare a mostrare in seguito funzionalità fail-safe (ad esempio, forse potremmo utilizzare i log per riavviare il lato client se fosse stato abortito).
grazie
Ok ho capito il modo con il file XML: '' –
Coffee