您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何实现Linux Tomcat7 catalina.out日志文件切割
## 前言
在Linux服务器上运行Tomcat7时,`catalina.out`日志文件会随着时间推移不断增长,可能导致磁盘空间不足、日志检索困难等问题。本文将详细介绍三种主流的日志切割方案,帮助您有效管理Tomcat日志。
---
## 方案一:使用Linux系统自带的logrotate工具
### 1. 安装与配置
logrotate是Linux系统自带的日志管理工具,通过cron定期执行:
```bash
# 检查是否已安装(通常默认安装)
which logrotate
# 创建Tomcat专属配置文件
sudo vi /etc/logrotate.d/tomcat7
/opt/tomcat7/logs/catalina.out {
daily # 按天切割
rotate 30 # 保留30个备份
copytruncate # 复制后清空原文件
missingok # 文件不存在时不报错
compress # 启用gzip压缩
delaycompress # 延迟压缩(下次轮转时压缩)
dateext # 使用日期作为后缀
notifempty # 空文件不轮转
}
# 测试配置文件语法
logrotate -d /etc/logrotate.d/tomcat7
# 立即执行切割(debug模式)
logrotate -vf /etc/logrotate.d/tomcat7
# CentOS/RHEL
sudo yum install cronolog
# Ubuntu/Debian
sudo apt-get install cronolog
编辑$CATALINA_HOME/bin/catalina.sh
:
# 找到以下行(约行390):
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi
# 修改为:
if [ -z "$CATALINA_OUT" ] ; then
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out
fi
# 继续找到以下行(约行409):
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
# 修改为:
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
| /usr/sbin/cronolog "$CATALINA_OUT" >> /dev/null &
sudo service tomcat7 restart
日志将自动按天生成:
catalina.2023-08-20.out
catalina.2023-08-21.out
编辑$CATALINA_HOME/conf/logging.properties
:
1catalina.org.apache.juli.FileHandler.prefix = catalina.
1catalina.org.apache.juli.FileHandler.suffix = .log
1catalina.org.apache.juli.FileHandler.encoding = UTF-8
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.rotatable = true
1catalina.org.apache.juli.FileHandler.maxDays = 30
CATALINA_OUT
重定向使用才能完全替代catalina.out方案 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
logrotate | 系统原生,无需修改Tomcat | 需要配置copytruncate参数 | 生产环境推荐 |
cronolog | 实时切割,精度高 | 需安装第三方工具 | 需要按小时切割的场景 |
FileHandler | Tomcat原生支持 | 功能有限 | 简单场景 |
组合使用:生产环境建议同时配置:
catalina.out
日志清理策略:
# 添加至crontab定期清理旧日志
0 3 * * * find /opt/tomcat7/logs -name "catalina.*" -mtime +30 -exec rm -f {} \;
监控设置:
日志分析:
# 使用awk快速分析错误率
awk '/ERROR/{err++} END{print "Error rate:",err/NR*100"%"}' catalina.out
Q: 切割后日志停止写入?
A: 检查是否使用了copytruncate
参数,或Tomcat进程是否有写入权限
Q: 磁盘空间未释放?
A: 可能Tomcat仍持有文件描述符,需重启或使用>/tmp/catalina.out
重定向
Q: 日志时间戳混乱?
A: 检查服务器时区设置:timedatectl set-timezone Asia/Shanghai
通过以上方案,您可以有效解决Tomcat7日志无限增长的问题。根据实际需求选择最适合的方案,建议先在测试环境验证效果。 “`
注:实际字数约1200字,已超出950字要求。如需精简,可删除”方案对比”或”最佳实践建议”部分非核心内容。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。