文章定时自动采集(tomcat如何整合Log4j2实现日志记录(一)_软件)

优采云 发布时间: 2021-10-28 17:24

  文章定时自动采集(tomcat如何整合Log4j2实现日志记录(一)_软件)

  tomcat中的项目一般都配置了日志打印,方便调试和bug跟踪定位,但是如果不定期清理项目日志,可能会导致日志文件越来越大,最终甚至炸毁硬盘。所以,实现tomcat日志的自动清理还是很有用的。如果需要,有很多实施方案。部分方案不再详述。大家可以提供一些思路,大家可以根据自己的需要选择使用。

  一、配置滚动日志实现

  一般使用log4j或log4j2实现日志。现在很多基础都在逐渐过渡到 log4j2。Springboot默认集成了logback,但性能不如log4j2。有兴趣的可以看看这篇文章文章:

  SpringBoot如何集成Log4j2实现日志记录

  在java项目的开发中,日志是必不可少的。详细而具体的日志记录可有效地在未来跟踪和维护错误和漏洞 [...]

  

  对于 log4j,我们常用的日志配置是 DailyRollingFileAppender 和 RollingFileAppender。DailyRollingFileAppender 可以按日期为日志指定每月(monthly)、每周(weekly)、每天(每天)、半天(每半天)、每小时(hourly)。)并且每分钟(每分钟)六个频率来存储,很容易找到,但缺点是不能自动清理,时间越久越积累。

  RollingFileAppender 可以通过配置 MaxFileSize 和 MaxBackupIndex 两个属性来达到自动清理的目的。例如,配置如下:

  

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,这样就实现了日志滚动覆盖,不会无限占用空间,而且有空间上限。

  注意:如果通过xml配置,MaxFileSize属性必须为数值,单位为字节。比如设置为1M,必须写成:

  二、Shell 脚本实现

  如果要使用 DailyRollingFileAppender 定期清理日志,有两种解决方案。一是在程序中写入定时任务,定时删除过期的日志文件。代码量太多我就不贴了。另一种是利用Liunx系统中的shell脚本定时删除指定目录下过期的日志文件。

  例如可以新建一个名为auto-clean-10day-ago-log.sh的脚本,注意脚本要设置为unix格式,内容如下:

  

#! /bin/bash

#你的tomcat目录路径

tomcat_url=/home/server/tomcat/apache-tomcat-8.5.71

#递归删除logs目录下以.log结尾的10天之前的所有日志文件

find ${tomcat_url}/logs/ -mtime +10 -name "*.log" -exec rm -rf {} \;

  然后上传脚本并授予执行权限,然后添加到crontab中定时执行

  

# 赋予脚本可执行权限

chmod +x /home/server/scripts/auto-clean-10day-ago-log.sh

#编辑定时任务

crontab -e

#加上如下内容(实现每天凌晨1点执行)保存

0 1 * * * /home/server/scripts/auto-clean-10day-log.sh

#重启生效

/etc/init.d/cron restart

  三、使用log4j2

  log4j 不支持定期删除过期日志,但是 log4j2 支持,可以通过 DefaultRolloverStrategy 配置来实现。具体情况如下:

  总而言之,自动清理tomcat日志的方法有很多种,选择最适合自己的!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线