2013-08-01 37 views
0

我有以下Log4j屬性:與Log4j的指定我自己的appender(或行爲)記錄工具

log4j.rootLogger=DEBUG, ONE, TWO 

log4j.appender.ONE=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.ONE.File=logs/one.log 
log4j.appender.ONE.DatePattern='.'yyyy-MM-dd 
log4j.appender.ONE.layout=org.apache.log4j.PatternLayout 
log4j.appender.ONE.layout.ConversionPattern= %-5p [%t] %c - %m%n 


log4j.appender.TWO=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.TWO.File=logs/TWO.log 
log4j.appender.TWO.DatePattern='.'yyyy-MM-dd 
log4j.appender.TWO.layout=org.apache.log4j.PatternLayout 
log4j.appender.TWO.layout.ConversionPattern= %-5p [%t] %c - %m%n 

唯一的區別是日誌文件的位置。有沒有一個程序化的方法,我可以選擇使用哪個appender。

if(Config.getInstance().equals("One")) 
    //Use appender ONE 
else 
    //use appender TWO 

我現在的想法/解決方案是有兩個屬性文件,並使用set屬性方法。但是,我很想知道是否有其他解決方案。

謝謝。

回答

1

這應該工作:

//Using system args instead of Config 
    final Logger rootLogger = Logger.getRootLogger(); 
    Appender ap = null; 
    if (args[0].equals("1")) { 
     ap = rootLogger.getAppender("TWO"); 
    } else if (args[0].equals("2")) { 
     ap = rootLogger.getAppender("ONE"); 
    } 
    if (ap != null) { 
     rootLogger.removeAppender(ap); 
    } 
相關問題