centos

CentOS Tomcat日志如何管理

小樊
49
2025-10-24 00:08:59
栏目: 智能运维

CentOS下Tomcat日志管理指南

一、日志定位

Tomcat的日志文件默认存储在$CATALINA_HOME/logs目录下($CATALINA_HOME为Tomcat安装目录环境变量)。主要日志文件包括:

二、实时查看日志

使用tail命令可实时跟踪日志文件的新增内容,便于快速定位问题:

cd $CATALINA_HOME/logs
tail -f catalina.out

Ctrl+C停止实时查看。若需过滤特定关键字(如“ERROR”),可结合grep命令:

tail -f catalina.out | grep ERROR

三、日志轮转(防止日志膨胀)

日志轮转用于定期分割、压缩旧日志,保留必要历史记录。常用方法为logrotate工具(CentOS系统自带):

1. 配置logrotate

编辑/etc/logrotate.d/tomcat文件(若不存在则创建),添加以下配置:

/usr/local/tomcat/logs/catalina.out {
    daily                # 每天轮转一次(可根据需求改为weekly/monthly)
    rotate 7             # 保留最近7个轮转文件(避免占用过多磁盘空间)
    compress             # 轮转后压缩(节省空间,生成.gz文件)
    missingok            # 若日志文件不存在,不报错
    notifempty           # 若日志为空,不进行轮转
    copytruncate         # 复制原日志文件后清空,避免Tomcat写入锁问题
}

2. 测试与执行

3. 自动执行

logrotate默认集成到系统cron任务中(/etc/cron.daily/logrotate),每天自动运行一次。

四、日志级别调整(控制日志详细程度)

通过修改logging.properties文件(位于$CATALINA_HOME/conf目录)可调整日志级别,减少不必要的日志输出:

# 设置根日志级别为WARN(仅记录警告、错误信息)
handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
1catalina.org.apache.juli.AsyncFileHandler.level = WARN
java.util.logging.ConsoleHandler.level = WARN

可选级别:FINEST(最详细)、FINERFINEINFO(默认)、WARNSEVERE(仅错误)。

五、日志清理(定期删除旧日志)

若未使用logrotate或需额外清理,可编写Shell脚本定期删除指定天数前的日志文件:

1. 创建清理脚本

vim /usr/local/tomcat/scripts/clean_tomcat_logs.sh

添加以下内容(删除/usr/local/tomcat/logs/目录下超过15天的所有日志文件):

#!/bin/bash
find /usr/local/tomcat/logs/ -type f -name "*.log" -mtime +15 -exec rm -f {} \;
find /usr/local/tomcat/logs/ -type f -name "*.out" -mtime +15 -exec rm -f {} \;

2. 添加执行权限

chmod +x /usr/local/tomcat/scripts/clean_tomcat_logs.sh

3. 设置定时任务

通过crontab -e添加以下内容(每天凌晨2点执行清理):

0 2 * * * /usr/local/tomcat/scripts/clean_tomcat_logs.sh

六、进阶:使用Log4j替代默认日志

若需更灵活的日志管理(如按级别拆分日志、发送到远程服务器),可使用Log4j替代Tomcat默认的JULI日志框架:

1. 准备依赖包

下载log4j-1.2.17.jartomcat-juli-adapters.jar(从Tomcat官网或Maven仓库获取),放入$CATALINA_HOME/lib目录。

2. 替换原有JAR包

$CATALINA_HOME/bin/tomcat-juli.jar备份后,替换为tomcat-juli-adapters.jar

3. 配置Log4j

$CATALINA_HOME/conf目录下创建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 = 5
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

此配置将日志输出到tomcat.log,单个文件最大10MB,保留5个备份。

七、使用journalctl查看系统日志

若Tomcat以systemd服务运行(如tomcat.service),可通过journalctl统一查看系统及应用日志:

journalctl -u tomcat.service      # 查看Tomcat服务日志
journalctl -u tomcat.service -f   # 实时跟踪Tomcat日志
journalctl -u tomcat.service --since "2025-10-24 00:00:00" --until "2025-10-24 23:59:59"  # 查看指定时间段日志

0
看了该问题的人还看了