Log4j的扩展RollingFileAppender、DailyRollingFileAppender

最常用的Appender——RollingFileAppender

RollingFileAppender的一个Log4j配置样例:

log4j.appender.R=org.apache.log4j.RollingFileAppender  
log4j.appender.R.Threshold=DEBUG  
log4j.appender.R.File=test.log  
log4j.appender.R.layout=org.apache.log4j.PatternLayout  
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
log4j.appender.R.MaxFileSize=20MB
log4j.appender.R.MaxBackupIndex=10

RollingFileAppender使用MaxFileSize设置一个日志文件的最大大小,当产生多个日志时,会在日志名称后面加上".1"、".2"、……这样的后缀,我们可以看到RollingFileAppender有个属性MaxBackupIndex,这个属性通过限制日志文件名后缀".n"中的n大小来限制日志数量,比如上面MaxBackupIndex=10,其实最大日志数量为11。我们知道这个有这个限制是很必要的,当我们的程序在服务器上运行时,随着时间的迁移,日志会越来越多,如果对日志数量没有限制,日志大小会越来越大,最后甚至占满整个硬盘。


可以按照周期时间来滚动日志文件的Appender——DailyRollingFileAppender

DailyRollingFileAppender的一个Log4j配置样例:

log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=test.log
log4j.appender.logfile.DataPattern='.'yyyy-MM-dd-HH-mm
log4j.appender.logfile.Threshold=debug
log4j.appender.logfile.encoding=UTF-8
#是否追加内容
log4j.appender.logfile.Append=true
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern= [%d{yyyy-MM-dd HH\:mm\:ss}]%-5p %c(line\:%L) %x-%m%n


DailyRollingFileAppender特点是固定周期时间生成一个日志文件,比如,默认情况是每天生成一个文件。这种日志可以方便根据时间来定位日志位置,使日志清晰易查。但是这种日志有个不好地方是,不能限制日志数量,MaxBackupIndex属性和MaxFileSize在DailyRollingFileAppender中是无效的,我们上面已经提到限制日志数量的必要性。这里有两个解决办法:

  • linux上crontab+shell
  • java进程里面起一个线程,定期扫描日志文件夹。

java中可以重写DailyRollingFileAppender,详情见https://www.cnblogs.com/rembau/p/5201001.html

在DailyRollingFileAppender中可以指定monthly(每月)、 weekly(每周)、daily(每天)、half-daily(每半天)、hourly(每小时)和minutely(每分钟)六个频度,这是通过为 DatePattern选项赋予不同的值来完成的。DatePattern选项的有效值为:

  • '.'yyyy-MM,对应monthly(每月)
  • '.'yyyy-ww,对应weekly(每周)
  • '.'yyyy-MM-dd,对应daily(每天)
  • '.'yyyy-MM-dd-a,对应half-daily(每半天)
  • '.'yyyy-MM-dd-HH,对应hourly(每小时)
  • '.'yyyy-MM-dd-HH-mm,对应minutely(每分钟)

DatePattern中不用处理的文字要放到单引号(')中,如上面的(.)。如果您对此有疑问可以查阅SimpleDateFormat的文档。DailyRollingFileAppender中使用这个类来处理DatePattern。

DatePattern格式化之后的文本作为文件名字的后缀。DailyRollingFileAppender不支持格式化之后的文本作为文件名字的前缀。

DailyRollingFileAppender在每一个日志事件(LoggingEvent)附加(append)之前检查是否需要附加。也就是说如果在一个滚动区间中没有任何日志记录,那么这个区间的日志记录文件就不会形成。

详情见 https://www.cnblogs.com/jtlgb/p/8342862.html

转载于:https://www.cnblogs.com/aidanallen/p/10718518.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
log4j是一个日志管理工具,其中DailyRollingFileAppenderRollingFileAppender都是log4j中的文件输出器,用于将日志输出到文件。 DailyRollingFileAppender按照时间切割日志文件,例如每天或每小时生成一个新的日志文件,以避免单个日志文件过大。使用DailyRollingFileAppender时,需要指定日志文件的文件名、日期格式和日志文件最大大小等参数。 例如,下面的配置将在每天生成一个新的日志文件,并将日志文件名设置为"app.log": ``` log4j.appender.myAppender=org.apache.log4j.DailyRollingFileAppender log4j.appender.myAppender.File=app.log log4j.appender.myAppender.DatePattern='.'yyyy-MM-dd log4j.appender.myAppender.Threshold=DEBUG log4j.appender.myAppender.layout=org.apache.log4j.PatternLayout log4j.appender.myAppender.layout.ConversionPattern=%d [%t] %-5p %c - %m%n ``` RollingFileAppender也是按照一定的规则切割日志文件,但是与DailyRollingFileAppender不同的是,RollingFileAppender是按照日志文件大小来切割日志文件。当一个日志文件达到指定的大小时,将自动创建一个新的日志文件,并将日志输出到新的文件中。使用RollingFileAppender时,需要指定日志文件的文件名、最大文件大小、最大备份数量等参数。 例如,下面的配置将在每个日志文件达到100MB时生成一个新的日志文件,最多保留5个备份: ``` log4j.appender.myAppender=org.apache.log4j.RollingFileAppender log4j.appender.myAppender.File=app.log log4j.appender.myAppender.MaxFileSize=100MB log4j.appender.myAppender.MaxBackupIndex=5 log4j.appender.myAppender.Threshold=DEBUG log4j.appender.myAppender.layout=org.apache.log4j.PatternLayout log4j.appender.myAppender.layout.ConversionPattern=%d [%t] %-5p %c - %m%n ``` 总的来说,DailyRollingFileAppenderRollingFileAppender都是log4j中非常实用的日志文件输出器,可以根据实际需求选择使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值