日期:2014-05-20  浏览次数:20925 次

log4j输出info,error问题
配置文件如下
### Log4j Config ###
log4j.rootLogger=info,error,stdout,info,error
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
 
log4j.logger.info=info
log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.info.datePattern='.'yyyy-MM-dd
log4j.appender.info.Threshold = INFO 
log4j.appender.info.append=true
log4j.appender.info.File=d:\\init\\info.log

log4j.logger.error=error
log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=[%-5p] [%d{HH:mm:ss}] %c - %m%n
log4j.appender.error.datePattern='.'yyyy-MM-dd
log4j.appender.error.Threshold = ERROR 
log4j.appender.error.append=true
log4j.appender.error.File=d:\\init\\error.log

类里面调用
private final static Logger logger_info = Logger.getLogger(Init.class.getName());
private final static Logger logger_error = Logger.getLogger(Init.class.getName());
public static void main(String args[]){
  logger_error.error("logger_error");  
  logger_info.info("logger_info");
}

问题是error的信息也会写到info.log里面
哪里错了?谢谢!!!!

------解决方案--------------------
error和info还要定义成两个Logger,这不是麻烦死了。。。

建议不要用properties来配置,难用的很。用XML来配置就行了,log4j支持的更好。

参见:
http://popomonkey.iteye.com/blog/744693

这样使用的时候很简单:
private static final Logger log = Logger.getLogger(Init.class);
log.debug("debug...");
log.info("info...");
log.warn("warn...");
log.error("error...");
一个log,自动分配不同文件。