我有以下Log4j属性:
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属性方法。但是,我很想知道是否有替代解决方案。
感谢。
答案 0 :(得分: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);
}