CentOS Tomcat日志如何高效管理
导读:一、定位Tomcat日志文件 Tomcat的日志文件默认存储在$CATALINA_HOME/logs目录下($CATALINA_HOME为Tomcat安装目录环境变量),主要包含以下类型: catalina.out:核心日志文件,记录To...
一、定位Tomcat日志文件
Tomcat的日志文件默认存储在$CATALINA_HOME/logs
目录下($CATALINA_HOME
为Tomcat安装目录环境变量),主要包含以下类型:
- catalina.out:核心日志文件,记录Tomcat启动/停止信息、运行时错误及请求响应等详细内容;
- localhost.date.log:本地主机活动日志(如Servlet生命周期、JSP编译);
- manager/date.log:Tomcat Manager应用日志(部署、卸载应用的操作记录);
- host-manager/date.log:Host Manager应用日志(虚拟主机管理操作)。
通过cd $CATALINA_HOME/logs
进入目录,可使用ls
命令查看具体文件。
二、实时查看与筛选日志
- 实时跟踪日志:使用
tail -f
命令实时查看catalina.out
的最新内容(如tail -f $CATALINA_HOME/logs/catalina.out
),按Ctrl+C
停止; - 提取特定时间段日志:用
sed
命令截取指定时间范围的日志(如sed -n "/2025-10-01/,/2025-10-02/p" catalina.out > /tmp/oct1_logs.txt
),将结果保存到临时文件便于分析; - 通过journalctl查看:若Tomcat以systemd服务运行(默认方式),可使用
journalctl -u tomcat
查看所有服务日志,支持按时间过滤(如journalctl -u tomcat --since "2025-10-01" --until "2025-10-02"
)。
三、配置日志轮转(核心高效管理手段)
日志轮转可防止catalina.out
等文件无限增长,避免磁盘空间耗尽。推荐使用系统自带的logrotate
工具,步骤如下:
- 安装logrotate:若未安装,通过
sudo yum install logrotate
命令安装(CentOS默认已预装); - 创建Tomcat专用配置文件:在
/etc/logrotate.d/
目录下新建tomcat
文件(如sudo vi /etc/logrotate.d/tomcat
); - 添加轮转规则:配置文件内容示例如下(关键参数说明见下文):
/usr/local/tomcat/logs/catalina.out { daily # 每天轮转一次(可根据需求改为weekly/monthly) rotate 7 # 保留最近7个轮转文件(避免过多占用空间) compress # 使用gzip压缩轮转后的文件(如catalina.out.1.gz) missingok # 若日志文件不存在,不报错继续执行 notifempty # 若日志文件为空,不进行轮转 copytruncate # 复制原日志文件后清空内容(避免Tomcat写入锁定的问题) }
- 测试配置有效性:使用
sudo logrotate -d /etc/logrotate.d/tomcat
命令模拟执行,无错误提示则表示配置正确; - 手动触发轮转:若需立即执行,使用
sudo logrotate -f /etc/logrotate.d/tomcat
(-f
表示强制); - 自动执行:logrotate默认已加入系统cron任务(
/etc/cron.daily/logrotate
),无需额外配置,每日自动运行。
四、调整日志输出级别(减少无效日志)
通过修改Tomcat的日志配置文件,可降低不必要的日志输出,提升日志可读性:
- 修改logging.properties:进入
$CATALINA_HOME/conf
目录,编辑logging.properties
文件,调整handlers
的日志级别(如将FINE
改为WARNING
或OFF
):handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler .level = WARNING # 全局日志级别(控制所有handler的输出阈值) 1catalina.org.apache.juli.AsyncFileHandler.level = WARNING # catalina日志级别 java.util.logging.ConsoleHandler.level = WARNING # 控制台输出级别
- 修改catalina.sh:在
$CATALINA_HOME/bin/catalina.sh
中,添加JAVA_OPTS
参数限制日志输出(如export JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties -Dorg.apache.catalina.level=WARNING"
)。
五、自动化清理旧日志(补充方案)
若不想依赖logrotate的rotate
参数,可通过shell脚本定期清理旧日志,步骤如下:
- 编写清理脚本:创建
auto-del-old-tomcat-logs.sh
文件(如/usr/local/tomcat/scripts/auto-del-old-tomcat-logs.sh
),内容如下:#!/bin/bash LOG_DIR="/usr/local/tomcat/logs" # 日志目录 DAYS_TO_KEEP=30 # 保留最近30天的日志 find "$LOG_DIR" -name "*.log*" -type f -mtime +$DAYS_TO_KEEP -exec rm -f { } \; # 删除超过30天的.log文件 find "$LOG_DIR" -name "catalina.out.*" -type f -mtime +$DAYS_TO_KEEP -exec rm -f { } \; # 删除catalina.out的旧备份
- 赋予执行权限:
chmod +x /usr/local/tomcat/scripts/auto-del-old-tomcat-logs.sh
; - 添加定时任务:通过
crontab -e
命令添加每日凌晨2点执行的定时任务(如0 2 * * * /usr/local/tomcat/scripts/auto-del-old-tomcat-logs.sh
)。
六、可选:使用Log4j替代默认日志框架(高级方案)
若默认的java.util.logging
无法满足需求(如需要更灵活的日志格式、远程日志传输),可切换至Log4j:
- 准备jar包:下载
log4j-1.2.17.jar
、tomcat-juli.jar
、tomcat-juli-adapters.jar
(从Tomcat官网或Maven仓库获取); - 放置jar包:将
log4j-1.2.17.jar
放入$CATALINA_HOME/lib
目录,将tomcat-juli.jar
复制到$CATALINA_HOME/bin
目录并替换原文件; - 修改配置文件:删除
$CATALINA_HOME/conf/logging.properties
,在lib
目录下创建log4j.properties
,配置日志输出(如滚动文件、控制台输出):log4j.rootLogger=INFO, file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=/usr/local/tomcat/logs/tomcat.log log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ yyyy-MM-dd HH:mm:ss} %-5p %c{ 1} :%L - %m%n
- 配置context.xml:在
$CATALINA_HOME/conf/context.xml
中添加swallowOutput="true"
,确保Tomcat的stdout/stderr被Log4j接管。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS Tomcat日志如何高效管理
本文地址: https://pptw.com/jishu/732355.html