关键配置,指定想要的日志级别信息输出到指定的日志文件中:
log4j.appender.errorLogger.Threshold=ERROR #扩展,可指定只在子类自己的输出源中输出,不在父类的输出源中输出 log4j.additivity.errorLogger=false
additivity配置例子参考log4j配置文件中的additivity属性,additivity配置详细log4j additivity解说
log4j.logger.com.sgcc=debug, platform1 log4j.additivity.com.sgcc.test.p2=false log4j.logger.com.sgcc.test.p1=debug, platform2 log4j.logger.com.sgcc.test.p2=debug, platform3
完整配置:
# 定义缺省的日志级别和输出对象
log4j.rootLogger=INFO,console,errorLogger,corLogger
#制定logger的名字,用于外部获取此logger #log4j.logger.tracer=DEBUG,tracer log4j.logger.errorLogger=ERROR,errorLogger log4j.logger.corLogger=INFO,corLogger # 设定错误日志文件的输出模式 log4j.appender.errorLogger=org.apache.log4j.DailyRollingFileAppender log4j.appender.errorLogger.File=${log.home}/core/error.log log4j.appender.errorLogger.Threshold=ERROR log4j.appender.errorLogger.layout=org.apache.log4j.PatternLayout log4j.appender.errorLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n # 设定审计日志文件的输出模式 log4j.appender.corLogger=org.apache.log4j.DailyRollingFileAppender log4j.appender.corLogger.File=${log.home}/core/cor.log log4j.appender.corLogger.layout=org.apache.log4j.PatternLayout log4j.appender.corLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n # 设定跟踪日志文件的输出模式 #log4j.appender.tracer=org.apache.log4j.DailyRollingFileAppender #log4j.appender.tracer.File=${log.home}/core/tracer.log #log4j.appender.tracer.layout=org.apache.log4j.PatternLayout #log4j.appender.tracer.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n
可是上面,还是上面指定控制还不是完美控制的,因为log4j记录器默认可输出的级别在输出日志信息级别以上的话都会输出,因为ERROR比INFO、DEBUG等级别高,所以想要INFO级别的日志信息输出到info.log日志文件中、DEBUG级别的日志信息输出到debug.log日志文件中等这样的需要话。需要重写log4j appender类。看代码:
新建一个类:
package com.core.util; import org.apache.log4j.DailyRollingFileAppender; import org.apache.log4j.Priority; public class ICoreDailyRollingFileAppender extends DailyRollingFileAppender { @Override public boolean isAsSevereAsThreshold(Priority priority) { return this.getThreshold().equals(priority); } }
再到log4j.porperties文件中配置:
# 定义缺省的日志级别和输出对象 log4j.rootLogger=INFO,console,errorLogger,corLogger #制定logger的名字,用于外部获取此logger #log4j.logger.tracer=DEBUG,tracer log4j.logger.errorLogger=ERROR,errorLogger log4j.logger.corLogger=INFO,corLogger # 设定错误日志文件的输出模式 log4j.appender.errorLogger=com.core.util.ICoreDailyRollingFileAppender log4j.appender.errorLogger.File=${log.home}/core/error.log log4j.appender.errorLogger.Threshold=ERROR log4j.appender.errorLogger.layout=org.apache.log4j.PatternLayout log4j.appender.errorLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n # 设定审计日志文件的输出模式 log4j.appender.corLogger=com.core.util.ICoreDailyRollingFileAppender log4j.appender.corLogger.File=${log.home}/core/cor.log log4j.appender.corLogger.layout=org.apache.log4j.PatternLayout log4j.appender.corLogger.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n # 设定跟踪日志文件的输出模式 #log4j.appender.tracer=com.core.util.ICoreDailyRollingFileAppender #log4j.appender.tracer.File=${log.home}/core/tracer.log #log4j.appender.tracer.layout=org.apache.log4j.PatternLayout #log4j.appender.tracer.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] [%c{1}] %X{uidMDC} %m%n
OK,
参考:
Log4j按级别输出日志到不同文件配置分析- http://blog.csdn.net/projava/article/details/7344839