2016-08-06 8 views
0

Ich möchte meinen Logging-Dateinamen dynamisch in Java setzen, weshalb ich versuche, meine Logging-Datei als programmtechnische Konfiguration neu zu implementieren, so dass ich den Log-Dateinamen festlegen kann eine Variable.Log4j-Konfiguration von Datei in In-Code-Konfiguration übersetzen

Ich bin fest, wie Log4j ein bestimmtes Paket auf info Ebene zu protokollieren.

Mein log4j.properties sah wie folgt aus:

log4j.rootLogger = warn, FILE 

log4j.appender.FILE=org.apache.log4j.RollingFileAppender 
log4j.appender.FILE.File=log.txt 
log4j.appender.FILE.Append=false 
log4j.appender.FILE.MaxFileSize=99999999KB 
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.FILE.layout.ConversionPattern=%m - %5p %d{HH:mm:ss,SSS} [%t] (%F:%L)%n 

log4j.logger.a.b.c.d=info 

Was ich bisher habe, ist dies:

FileAppender fa = new FileAppender(); 
     fa.setName("FileLogger"); 
     fa.setFile("mylog"+args+".log"); 
     fa.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n")); 
     fa.setThreshold(Level.WARN); 
     fa.setAppend(false); 
     fa.activateOptions(); 

     //add appender to any Logger (here is root) 
     Logger.getRootLogger().addAppender(fa); 
     Logger.getLogger("a.b.c.d").setLevel(Level.INFO); 

Wenn ich die FileAppender zu warn nichts gesetzt wird protokolliert, wenn ich es info gesetzt ist im Wesentlichen alles. Meine letzte Codezeile scheint keine Wirkung zu haben. Irgendjemand eine Idee was fehlt?

+0

pls teilen log4j version, ich werde versuchen, es bei meiner lokalen –

+0

replizieren ich benutze log4j 1.2.17 – toobee

Antwort

0

Bitte entfernen Sie SetThreshold von Appender und testen. Es hat für mich funktioniert.

Von Javadocs

public void SetThreshold (Priorität Schwelle) den Schwellenwert einstellen. Alle Protokollereignisse mit einem niedrigeren Pegel als der Schwellenwert werden vom Appender ignoriert. In Konfigurationsdateien wird diese Option angegeben, indem der Wert der Option Threshold auf eine Ebenenzeichenfolge wie "DEBUG", "INFO" usw. gesetzt wird.