Debian 上 Tomcat 的日志轮转机制
在 Debian 上,Tomcat 的日志轮转通常由两类机制协同完成:一是 logrotate(系统级日志轮转工具),二是 JULI 文件处理器(Tomcat 内部的按日期/大小滚动)。前者负责按天或按大小切割并压缩归档日志文件,后者在应用层按配置生成带日期后缀的日志,二者可独立或配合使用。
机制一 logrotate 系统级轮转
/opt/tomcat/logs/catalina.out {
daily
rotate 7
compress
missingok
notifempty
copytruncate
}
/var/log/tomcat/*.log {
daily
missingok
rotate 7
compress
notifempty
create 640 tomcat adm
sharedscripts
postrotate
if [ -f /var/run/tomcat.pid ]; then
/usr/share/tomcat/bin/shutdown.sh
fi
sleep 5
/usr/share/tomcat/bin/startup.sh
endscript
}
sudo logrotate -f /etc/logrotate.d/tomcattail -f /var/log/syslog | grep tomcat机制二 JULI 内部轮转
1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.rotatable = true
1catalina.org.apache.juli.AsyncFileHandler.encoding = UTF-8
该方式由 Tomcat 在运行时自行管理,适合与系统级 logrotate 并行使用(例如对 catalina.out 使用 copytruncate,对按日期生成的文件由 JULI 管理)。如何选择与最佳实践
tail -f 或集中化日志平台监控关键错误与访问日志。