在Ubuntu上管理Tomcat日志文件,通常使用 Logrotate 工具进行日志轮转和分割,以及使用 cronolog 实现更精细的日志文件命名规则。以下是详细的步骤和一些最佳实践:
安装Logrotate(如果尚未安装):
sudo apt-get install logrotate
配置Logrotate:
编辑或创建 /etc/logrotate.d/tomcat
配置文件,例如:
/etc/logrotate.d/tomcat {
daily # 按天轮转日志
rotate 7 # 保留7天的日志文件
compress # 压缩旧的日志文件
missingok # 如果日志文件丢失,不报错
notifempty # 如果日志文件为空,不轮转
create 640 tomcat tomcat # 文件权限和所有者
postrotate
/bin/kill -USR1 `cat /var/run/tomcat.pid` # 轮转后向Tomcat进程发送USR1信号,使其重新打开日志文件
endscript
}
测试配置:
logrotate -d /etc/logrotate.d/tomcat # 测试配置文件是否有错误
强制运行Logrotate:
logrotate -f /etc/logrotate.d/tomcat # 强制轮转日志文件
设置Logrotate自动运行:
Logrotate通常由系统的cron守护进程自动运行,你可以在 /etc/cron.daily/logrotate
中找到它。
安装cronolog(如果尚未安装):
sudo apt-get install cronolog
修改Tomcat的 catalina.sh
文件:
使用vim编辑 /path/to/tomcat/bin/catalina.sh
文件,找到以下行并进行替换:
org.apache.catalina.startup.Bootstrap "@" start \
"/path/to/tomcat/logs/catalina.out" 2>&1 &
替换为:
org.apache.catalina.startup.Bootstrap "@" start \
"/usr/local/sbin/cronolog {CATALINA_BASE}/logs/catalina.%Y-%m-%d.out" /dev/null &
重启Tomcat: 保存并退出编辑器,然后重启Tomcat使配置生效。
可以编写Shell脚本来自动化Tomcat日志的清理和分析。以下是一个简单的示例脚本:
#!/bin/bash
# 设置Tomcat日志路径
LOG_PATH="/path/to/tomcat/logs"
# 删除超过7天的日志文件
find $LOG_PATH -name "catalina.*.log" -mtime +7 -exec rm -rf {} \;
# 清空catalina.out文件
> $LOG_PATH/catalina.out
将上述脚本保存为 clear_tomcat_logs.sh
,并赋予执行权限:
chmod +x clear_tomcat_logs.sh
然后,使用 crontab -e
设置定时任务,例如每天23:59执行该脚本:
59 23 * * * /path/to/clear_tomcat_logs.sh
下载并配置Log4j:
下载 log4j-core-2.15.0.jar
和 log4j-api-2.15.0.jar
,并将它们放置在Tomcat的 lib
目录下。
创建 log4j2.xml
配置文件:
在Tomcat的 conf
目录下创建 log4j2.xml
配置文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/app-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="RollingFile"/>
</Root>
</Loggers>
</Configuration>
添加JVM参数:
在Tomcat的 catalina.sh
或 catalina.bat
脚本中添加以下JVM参数:
-Dlog4j.configurationFile=$CATALINA_BASE/conf/log4j2.xml
重启Tomcat: 修改配置后,重启Tomcat以使更改生效。
通过这些步骤和技巧,你可以在Ubuntu系统上有效地管理Tomcat日志,确保日志文件不会过大,且易于管理和分析。