log4j两种常用配置

一、问题来源

项目中对log4j的配置一直是每天自动生成一个新的日志文件,这里配置了4个不同级别的日志,意味着每天会生成4个不同的日志文件,时间久了日志会变的非常庞大。针对这个难题我在这做出优化配置说明。

二、现状

SpringMvc+Mybatis的架构,下面是每天自动生成一个文件的,下面这种配置的好处在于每天生成一个文件,如果我们程序出现了问题有日志就可以准确定位到具体的文件。但是缺点在于时间久了tomcat下logs目录会变大非常庞大。如果这时有一块很大的硬盘来存储那这种方式还是不错的。

# FATAL, ERROR, WARN, INFO, DEBUG message output to deference file
#Root appender setting ,errorfile,debugfile,infofile,warnfile,fatalfile
#\u672C\u5730\u5F00\u53D1
#log4j.rootLogger=DEBUG,stdout,debugfile,infofile,warnfile,errorfile
#\u670D\u52A1\u5668
log4j.rootLogger=infofile,warnfile,errorfile,debugfile

# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c:%L - %m%n

# SqlMap logging configuration...
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.cache.CacheModel=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientImpl=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.builder.xml.SqlMapParser=DEBUG
log4j.logger.com.ibatis.common.util.StopWatch=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

#defind debugfile
log4j.appender.debugfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.debugfile.DatePattern='.'yyyy-MM-dd
log4j.appender.debugfile.File = ${catalina.home}/logs/kt/debug.log
#log4j.appender.debugfile.MaxFileSize=1024KB                                       
#log4j.appender.debugfile.MaxBackupIndex=1  
log4j.appender.debugfile.Append = true
log4j.appender.debugfile.layout = org.apache.log4j.PatternLayout
log4j.appender.debugfile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
# \u5411\u4E0A\u629B\u51FA
log4j.additivity.debugfile = true
log4j.appender.debugfile.encoding=UTF-8

#defind infofile
log4j.appender.infofile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.infofile.DatePattern='.'yyyy-MM-dd
log4j.appender.infofile.File = ${catalina.home}/logs/kt/info.log
#log4j.appender.infofile.MaxFileSize=1024KB                                       
#log4j.appender.infofile.MaxBackupIndex=1  
log4j.appender.infofile.Append = true
log4j.appender.infofile.Threshold = INFO
log4j.appender.infofile.layout = org.apache.log4j.PatternLayout
log4j.appender.infofile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
# \u5411\u4E0A\u629B\u51FA
log4j.additivity.infofile = true
log4j.appender.infofile.encoding=UTF-8

#defind warnfile
log4j.appender.warnfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.warnfile.DatePattern='.'yyyy-MM-dd
log4j.appender.warnfile.File = ${catalina.home}/logs/kt/warn.log
#log4j.appender.warnfile.MaxFileSize=1024KB                                       
#log4j.appender.warnfile.MaxBackupIndex=1    
log4j.appender.warnfile.Append = true
log4j.appender.warnfile.Threshold = WARN
log4j.appender.warnfile.layout = org.apache.log4j.PatternLayout
log4j.appender.warnfile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
# \u5411\u4E0A\u629B\u51FA
log4j.additivity.warnfile = true
log4j.appender.warnfile.encoding=UTF-8

#defind errorfile
log4j.appender.errorfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd
log4j.appender.errorfile.File = ${catalina.home}/logs/kt/error.log
#log4j.appender.errorfile.MaxFileSize=1024KB                                       
#log4j.appender.errorfile.MaxBackupIndex=1 
log4j.appender.errorfile.Append = true
log4j.appender.errorfile.Threshold = ERROR
log4j.appender.errorfile.layout = org.apache.log4j.PatternLayout
log4j.appender.errorfile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
# \u5411\u4E0A\u629B\u51FA
log4j.additivity.errorfile = true
log4j.appender.errorfile.encoding=UTF-8

三、优化后的配置文件

   对上面的这个配置文件做优化,优化的方式是所有的日志在一个文件里,设置当这个文件大于1024KB后自动生成一个新的文件,这里1024是可以修改的,具体多大可以自定义,然后在设置保存历史数据的几个文件。下面是优化后的配置文件。

可以看出日志两个方式不同,一种是DailyRollingFileAppender另一种是RollingFileAppender,这两个的区别在于一个每天自动生成一个新的文件,另一个全部在一个文件中。配置好之后使用方式和原来一样,

# FATAL, ERROR, WARN, INFO, DEBUG message output to deference file
#Root appender setting ,errorfile,debugfile,infofile,warnfile,fatalfile
#\u672C\u5730\u5F00\u53D1
#log4j.rootLogger=DEBUG,stdout,debugfile,infofile,warnfile,errorfile
#\u670D\u52A1\u5668
log4j.rootLogger=infofile,warnfile,errorfile,debugfile

# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c:%L - %m%n

# SqlMap logging configuration...
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.cache.CacheModel=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientImpl=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.builder.xml.SqlMapParser=DEBUG
log4j.logger.com.ibatis.common.util.StopWatch=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG

#defind debugfile
#log4j.appender.debugfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.debugfile = org.apache.log4j.RollingFileAppender
#log4j.appender.debugfile.DatePattern='.'yyyy-MM-dd
log4j.appender.debugfile.File = ${catalina.home}/logs/kt/debug.log
log4j.appender.debugfile.MaxFileSize=10240KB                                       
log4j.appender.debugfile.MaxBackupIndex=10
log4j.appender.debugfile.Append = true
log4j.appender.debugfile.layout = org.apache.log4j.PatternLayout
log4j.appender.debugfile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
# \u5411\u4E0A\u629B\u51FA
log4j.additivity.debugfile = true
log4j.appender.debugfile.encoding=UTF-8

#defind infofile
#log4j.appender.infofile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.infofile = org.apache.log4j.RollingFileAppender
#log4j.appender.infofile.DatePattern='.'yyyy-MM-dd
log4j.appender.infofile.File = ${catalina.home}/logs/kt/info.log
log4j.appender.infofile.MaxFileSize=5120KB                                       
log4j.appender.infofile.MaxBackupIndex=10 
log4j.appender.infofile.Append = true
log4j.appender.infofile.Threshold = INFO
log4j.appender.infofile.layout = org.apache.log4j.PatternLayout
log4j.appender.infofile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
# \u5411\u4E0A\u629B\u51FA
log4j.additivity.infofile = true
log4j.appender.infofile.encoding=UTF-8

#defind warnfile
#log4j.appender.warnfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.warnfile = org.apache.log4j.RollingFileAppender
#log4j.appender.warnfile.DatePattern='.'yyyy-MM-dd
log4j.appender.warnfile.File = ${catalina.home}/logs/kt/warn.log
log4j.appender.warnfile.MaxFileSize=5120KB                                       
log4j.appender.warnfile.MaxBackupIndex=10  
log4j.appender.warnfile.Append = true
log4j.appender.warnfile.Threshold = WARN
log4j.appender.warnfile.layout = org.apache.log4j.PatternLayout
log4j.appender.warnfile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
# \u5411\u4E0A\u629B\u51FA
log4j.additivity.warnfile = true
log4j.appender.warnfile.encoding=UTF-8

#defind errorfile
#log4j.appender.errorfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorfile = org.apache.log4j.RollingFileAppender
#log4j.appender.errorfile.DatePattern='.'yyyy-MM-dd
log4j.appender.errorfile.File = ${catalina.home}/logs/kt/error.log
log4j.appender.errorfile.MaxFileSize=5120KB                                       
log4j.appender.errorfile.MaxBackupIndex=10 
log4j.appender.errorfile.Append = true
log4j.appender.errorfile.Threshold = ERROR
log4j.appender.errorfile.layout = org.apache.log4j.PatternLayout
log4j.appender.errorfile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
# \u5411\u4E0A\u629B\u51FA
log4j.additivity.errorfile = true
log4j.appender.errorfile.encoding=UTF-8

可以看出日志两个方式不同,一种是DailyRollingFileAppender另一种是RollingFileAppender,这两个的区别在于一个每天自动生成一个新的文件,另一个全部在一个文件中。配置好之后使用方式和原来一样

修改的4个配置文件的同一个位置


之前的输出的效果

优化之后的效果



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值