Java swing log4j in Textarea
Hallo,
ich arbeite gerade daran mein log4j in einem Textarea anzuzeigen. Das schreiben in eine Datei und das anzeigen in der Konsolle funktioniert schon. Meine Frage ist wie muss ich den Appender oder die properties anpassen, damit die Ausgabe im Textarea angezeigt wird. Die Ausgaben mit System.out habe ich auch bereits im Textarea.
Mein Projekt sieht wie folgt aus:
ApplicationLogger.java
log4j.properties
MainWindow.java
ich arbeite gerade daran mein log4j in einem Textarea anzuzeigen. Das schreiben in eine Datei und das anzeigen in der Konsolle funktioniert schon. Meine Frage ist wie muss ich den Appender oder die properties anpassen, damit die Ausgabe im Textarea angezeigt wird. Die Ausgaben mit System.out habe ich auch bereits im Textarea.
Mein Projekt sieht wie folgt aus:
src
package1
ApplicationLogger.java
package2
MainWindow.java
log4j.properties
package package1;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import org.apache.log4j.FileAppender;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.PropertyConfigurator;
public class ApplicationLogger {
private static Logger logger = null;
public static Logger getInstance() {
if (logger == null) {
initLogger();
}
return logger;
}
private static void initLogger() {
try {
logger = Logger.getLogger(ApplicationLogger.class);
PatternLayout appenderLayout = new PatternLayout();
appenderLayout.setConversionPattern("%d{ISO8601} %-5p [%t] %m%n");
// PatternLayout layout = new PatternLayout( "%d{ISO8601} %-5p [%t] %c: %m%n" );
FileAppender appender = new FileAppender(appenderLayout, "logs/Info.log", false);
logger.addAppender(appender);
logger.setLevel(org.apache.log4j.Level.ALL);
Properties props = new Properties();
props.load(new FileInputStream("log4j.properties"));
PropertyConfigurator.configure(props);
} catch (IOException ex) {
logger.error("Cannot access log file: " + ex.getLocalizedMessage());
} catch (Exception ex) {
logger.error("Unknown exception: " + ex.getLocalizedMessage());
}
}
private ApplicationLogger() {
super();
}
}
log4j.properties
log4j.rootCategory=debug,console
log4j.logger.com.demo.package=debug,console
log4j.additivity.com.demo.package=false
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.out
log4j.appender.console.immediateFlush=true
log4j.appender.console.encoding=UTF-8
#log4j.appender.console.threshold=warn
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%d [%t] %-5p %c - %m%n
public class MainWindow {
private static final Logger logger = ApplicationLogger.getInstance();
private final JTextArea textAreaLog = new JTextArea();
@SuppressWarnings("javadoc")
public static void main(String args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
MainWindow window = new MainWindow();
logger.info("Test");
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
...
private void initialize() {
...
PrintStream stream = new PrintStream(System.out) {
@Override
public void print(String s) {
MainWindow.this.textAreaMultipleConfigurationLog.append(logger + "\n");
}
};
System.setOut(stream);
}...
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 391897
Url: https://administrator.de/forum/java-swing-log4j-in-textarea-391897.html
Ausgedruckt am: 23.02.2025 um 03:02 Uhr