ff-itler
Goto Top

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:
src
   package1
      ApplicationLogger.java
   package2
      MainWindow.java
log4j.properties
ApplicationLogger.java
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
MainWindow.java
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);
}...
}

Content-Key: 391897

Url: https://administrator.de/contentid/391897

Printed on: April 25, 2024 at 12:04 o'clock