如何实现tomcat日志自动定时清理

IT 文章4年前 (2021)发布 小编
0 0 0

tomcat中的项目一般都会配置日志打印,方便调试与bug追踪定位,但是如果项目日志不定期清理,可能会导致日志文件越来越大,最后甚至撑爆硬盘,因此实现tomcat日志自动清理还是很有必要的,实现方案也很多,有些方案就不细说了,可以提供些思路,根据自己的需求可以自行选择使用。

一、配置滚动日志实现

一般日志都是使用log4j或log4j2来实现,现在很多基本都在逐步过渡到1og4j2,springboot默认集成logback,但性能都不及log4j2,有兴趣的可以看下这篇文章:
[neilian ids=3252]
针对log4j,我们一般常用的日志配置是DailyRollingFileAppenderRollingFileAppenderDailyRollingFileAppender可以对日志按日期指定monthly(每月)、 weekly(每周)、daily(每天)、half-daily(每半天)、hourly(每小时)和minutely(每分钟)六个频度来存储,便于查找,但缺点就是不能自动清理,随着时间的推移越积累越多。
RollingFileAppender可以配置MaxFileSizeMaxBackupIndex这两个属性来实现自动清理的目的,比如配置如下:

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

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站


二、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日志自动定时清理有很多种方式,选择一种适合自己的最好!

ad

AI 工具导航

优网导航旗下AI工具导航,精选全球千款优质 AI 工具集

© 版权声明

相关文章

暂无评论

暂无评论...