log4j是java项目常用的日志输出组件,其配置灵活,功能强大,之前只是在项目中简单的使用,然后使用中学习其他功能,比如今天我们打算将日志按照不同的package包名输出,配置类config包下的日志输出到config.log,业务处理的日志输出到busi.log。因为配置比较简单就只贴出log4j.propertis的配置,源码过多就不贴了
log4j.rootLogger =ALL,systemOut
#输出到控制台
log4j.appender.systemOut = org.apache.log4j.ConsoleAppender
log4j.appender.systemOut.layout = org.apache.log4j.PatternLayout
log4j.appender.systemOut.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} - [ %p ] %m%n
log4j.appender.systemOut.Threshold = DEBUG
log4j.appender.systemOut.ImmediateFlush = TRUE
log4j.appender.systemOut.Target = System.out
#输出com.roy.busi包下类的日志,debug级别,appender是busi
log4j.logger.com.roy.busi=debug,busi
#每日生成新的文件
log4j.appender.busi = org.apache.log4j.DailyRollingFileAppender
log4j.appender.busi.layout = org.apache.log4j.PatternLayout
log4j.appender.busi.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} - [ %p ] %m%n
log4j.appender.busi.Threshold = DEBUG
log4j.appender.busi.ImmediateFlush = TRUE
log4j.appender.busi.Append = TRUE
#日志路径
log4j.appender.busi.File = ./logfile/log4j-busi.log
log4j.appender.busi.Encoding = UTF-8
#输出com.roy.config包下类的日志
log4j.logger.com.roy.config=debug,config
#每日生成新的文件
log4j.appender.config = org.apache.log4j.DailyRollingFileAppender
log4j.appender.config.layout = org.apache.log4j.PatternLayout
log4j.appender.config.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} - [ %p ] %m%n
log4j.appender.config.Threshold = DEBUG
log4j.appender.config.ImmediateFlush = TRUE
log4j.appender.config.Append = TRUE
#日志路径
log4j.appender.config.File = ./logfile/log4j-config.log
log4j.appender.config.Encoding = UTF-8
其中新建的两个appender适配器busi和config不要配在rootLogger全局中,只在自己包下配置,比如:
com.roy.busi就是package包名,debug是级别,busi是appender名字
log4j.logger.com.roy.busi=debug,busi
这样的话程序就会生成两个日志文件log4j-config.log和log4j-busi.log,不同包下类中的日志信息会分别按照配置输出到这两个文件中。同样的,适应于更复杂繁多的项目中,这次学到的虽然比较简单但还是很有用,记录以加深印象,以后若有更高级的运用,会再新的blog中介绍。