当Ubuntu上的Tomcat日志文件(通常是catalina.out
)过大时,可能会占用大量磁盘空间,影响系统性能,并且难以管理和分析。以下是一些解决Tomcat日志文件过大的方法:
logrotate
进行日志轮转logrotate
是Linux系统自带的日志轮转工具,可以自动切割、压缩、删除和邮件通知日志文件。
编辑 logrotate
配置文件:
打开 /etc/logrotate.conf
文件,确保包含以下配置:
/home/tomcat/logs/catalina.out {
daily
rotate 20
compress
missingok
notifempty
create 0644 tomcat tomcat
}
这个配置表示每天轮转 catalina.out
文件,保留最多20个备份,使用gzip压缩旧日志文件。
创建 logrotate
配置文件:
在 /etc/logrotate.d/
目录下创建一个名为 tomcat
的文件,内容如下:
/home/tomcat/logs/catalina.out {
daily
rotate 20
compress
missingok
notifempty
create 0644 tomcat tomcat
}
手动执行 logrotate
:
你也可以手动执行 logrotate
命令来测试配置是否正确:
sudo logrotate -d /etc/logrotate.conf # 测试配置
sudo logrotate -f /etc/logrotate.conf # 强制重新生成配置
设置 logrotate
定时任务:
logrotate
会自动在每天执行日志轮转任务。你也可以手动触发:
sudo logrotate -f /etc/logrotate.conf # 强制重新生成配置
cronolog
进行日志轮转cronolog
是一个基于 logrotate
的工具,可以更灵活地控制日志文件的命名和轮转。
安装 cronolog
:
sudo apt-get install cronolog
修改 catalina.sh
文件:
编辑 /usr/local/tomcat/bin/catalina.sh
文件,在 catalina.out
的日志路径前添加 cronolog
:
CATALINA_OUT="/usr/local/tomcat/logs/catalina.%Y-%m-%d.out"
重启 Tomcat:
修改完成后,重启 Tomcat 以使配置生效:
sudo service tomcat8 restart
通过调整日志级别,可以减少不必要的日志输出,从而减少日志文件的大小。
修改 logging.properties
文件:
打开 /usr/local/tomcat/conf/logging.properties
文件,调整日志级别:
org.apache.catalina.core.ContainerBase.[Catalina].level = WARNING
org.apache.catalina.core.ContainerBase.[Catalina].handlers = 2localhost.org.apache.juli.AsyncFileHandler
禁用不必要的日志:
如果你不需要某些特定的日志,可以在 server.xml
中配置 Valve
来禁用它们。例如,禁用访问日志:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="${catalina.base}/logs" prefix="access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" resolveHosts="false"/>
如果上述方法都不适用,你可以手动清理日志文件。
清空日志文件:
sudo rm -f /usr/local/tomcat/logs/catalina.out
定期清理旧日志:
使用 cron
定时任务定期删除旧的日志文件:
crontab -e
添加以下行以每天删除7天前的日志文件:
0 0 * * * find /usr/local/tomcat/logs/ -mtime +7 -type f -name "*.log" -exec rm -f {} \;
通过以上方法,你可以有效地管理Tomcat日志文件的大小,减少对服务器性能的影响。