Log4j的扩展RollingFileAppender、DailyRollingF…
2019-04-18 08:54:15来源:博客园 阅读 ()
最常用的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
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Spring Boot(Spring的自动整合框架)
下一篇:Java-this
- Spring Cloud Gateway 扩展支持动态限流 2020-06-08
- Log4j2初探 2020-05-30
- COLA的扩展性使用和源码研究 2020-05-25
- 真香警告!扩展 swagger支持文档自动列举所有枚举值 2020-05-18
- 请设计一个核心功能稳定适合二开扩展的软件系统 2020-04-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash