Hallo,
ich nutze log4j zum Logging in meiner Anwendung und gebe es in einer Konsole in der GUI meiner Anwendung aus. Das habe ich bisher so gemacht, dass ich als Appender einen ConsoleAppender verwende. Dazu habe ich einen neuen PrintStream geschrieben, der die Daten in meine GUI schreibt und diesen habe ich als neuen System.out gesetzt. Das funktioniert auch soweit ganz gut.
Jetzt möchte ich aber nicht mehr den Umweg über den System.out gehen. Daher dachte ich mir, ich nutze als Appender den WriterAppender:
XML-Config:
Java Code:
Ich kriege aber jedes mal eine Fehlermeldung:
Im Internet findet man irgendwie so gut wie keine Informationen über den log4j WriterAppender. Und ich kann beim besten Willen nicht nachvollziehen, warum das nicht funktioniert. Kann mir jemand helfen? Oder gibts vielleicht eine andere Lösung, wie man die Logging Messages in eine GUI bekommt?
Danke im Voraus!
MFG byto
ich nutze log4j zum Logging in meiner Anwendung und gebe es in einer Konsole in der GUI meiner Anwendung aus. Das habe ich bisher so gemacht, dass ich als Appender einen ConsoleAppender verwende. Dazu habe ich einen neuen PrintStream geschrieben, der die Daten in meine GUI schreibt und diesen habe ich als neuen System.out gesetzt. Das funktioniert auch soweit ganz gut.
Jetzt möchte ich aber nicht mehr den Umweg über den System.out gehen. Daher dachte ich mir, ich nutze als Appender den WriterAppender:
XML-Config:
Code:
<appender name="Console2" class="org.apache.log4j.WriterAppender">
<param name="Writer" value="de.tubs.jlsc.util.Loggers.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{HH:mm:ss}] Executing : %m%n"/>
</layout>
</appender>
Java Code:
Code:
package de.tubs.jlsc.util;
public interface Loggers {
...
PrintStream outExecution = new PrintStream(new OutputStream() {
public void write(final int b) {
//hier schreibe ich in die GUI (der Code ist korrekt):
Display.getDefault().asyncExec(new Runnable() {
public void run() {
Application.getInstance().getExecutionConsole().append(String.valueOf((char) b));
}
});
}
});
Writer out = new OutputStreamWriter(outExecution);
}
Ich kriege aber jedes mal eine Fehlermeldung:
log4j:WARN Failed to set property [writer] to value "de.tubs.jlsc.util.Loggers.out".
Im Internet findet man irgendwie so gut wie keine Informationen über den log4j WriterAppender. Und ich kann beim besten Willen nicht nachvollziehen, warum das nicht funktioniert. Kann mir jemand helfen? Oder gibts vielleicht eine andere Lösung, wie man die Logging Messages in eine GUI bekommt?
Danke im Voraus!
MFG byto