关于Tomcat服务器catalina.out文件过大的问题
一、问题:当服务部署Tomcat后,运行时间久了,catalina.out文件就会越来越大,最终导致服务器磁盘空间不足,影响系统的稳定性。
二、解决方案:
1、修改Tomcat的日志配置,配置日志的级别:
(1)、Tomcat日志分类:
catalina:标准输出和标准出错,所有输出到这两个位置的都会进入catalina.outlocalhost:localhost.{yyyy-MM-dd}.log主要是应用初始化(listener, filter, servlet)未处理的异常最后被tomcat捕获而输出的日志,它也是包含tomcat的启动和暂停时的运行日志manager:tomcat manager项目专有的日志文件host-manager:存放tomcat的自带的manager项目的日志信息admin:存放tomcat的自带的admin日志信息
(2)、Tomcat日志级别:
SEVERE (最高级别) > WARNING > INFO > CONFIG > FINE > FINER(精心) > FINEST (所有内容,最低级别)
(3)、配置日志级别:
tomcat根目录:conf/logging.properties,默认是FINE,具体可以依据项目实际情况来配置
2、修改项目的日志配置,配置日志输出的级别:(下面以Log4j日志组件为例)
(1)日志级别:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL
(2)常用级别及说明:
ERROR:输出错误信息。比如接口访问超时,用try/catch 捕获异常,发生异常的时候log.error输出错误信息WARN:输出警告信息,表明具有潜在危害的情况INFO:输出提示信息,指定能够突出在粗粒度级别的应用程序运行情况的信息的消息DEBUG:输出调试信息,指出细粒度信息事件对调试应用程序是非常有帮助的,一般使用log.debug()进行跟踪调试
(3)、参考案例如下(可依据项目实际情况进行配置):
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{50} - %msg%n
3、清理catalina.out文件(除非不再需要Tomcat日志,否则不建议)
(1)、手动清理:切换到tomcat的logs下,运行如下命令清空日志数据
echo " " > catalina.out
(2)、自动清理:编写脚本,放入计划任务中,定时清理
crontab -e #添加任务
0 24 * * * sh /root/clean_catalina.out.sh
vim clean_catalina.out.sh #定义任务执行的脚本内容
#!/usr/bin/bash
echo " " > /usr/local/tomcat/logs/catalina.out
service crond restart #重启crontab 服务,使修改生效
(3)、对catalina.out日志文件进行切分,这样就可以通过脚本对时间久远的日志进行定时清理:
常用的切分技术:cronolog、logrotate等
将catalina.out按天进行切分,如:catalina.2022-05-15.out、catalina.2022-05-16.out,然后可以通过定时任务对某个时间段内的日志进行清理
三、总结:
综上所述,遇到Tomcat日志文件catalina.out占用磁盘空间过大的情况,可以从以下三方面入手:
调整Tomcat日志级别调整并优化项目的日志记录与日志级别通过定时任务定期清理日志信息
如有更好的方案,欢迎评论交流👏