温馨提示×

CentOS下Tomcat日志管理方法

小樊
54
2025-10-19 18:24:28
栏目: 智能运维

CentOS下Tomcat日志管理方法

1. 日志文件定位

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

  • catalina.out:Tomcat主日志文件,记录启动/停止信息、运行时错误及常规日志;
  • localhost.date.log:本地主机活动日志(如Servlet初始化、JSP编译);
  • manager.date.log:Tomcat Manager应用日志(部署、卸载操作记录);
  • host-manager.date.log:Tomcat Host Manager应用日志(虚拟主机管理操作记录)。

2. 实时查看日志

使用tail命令实时跟踪日志文件的新增内容,是排查实时问题的常用方式:

cd $CATALINA_HOME/logs
tail -f catalina.out  # 实时查看catalina.out日志

常用选项:

  • -f:循环读取文件,实时显示最新内容;
  • -n 100:显示最后100行日志;
  • Ctrl+C:停止实时查看。

3. 日志轮转配置

日志轮转可防止日志文件过大占用磁盘空间,常用方法有两种:

(1)通过logrotate工具(系统级轮转)

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

/usr/local/tomcat/logs/catalina.out {
    daily           # 每天轮转
    rotate 7        # 保留最近7天的日志
    compress        # 压缩旧日志(如catalina.out.1.gz)
    missingok       # 若日志文件不存在也不报错
    notifempty      # 若日志为空则不轮转
    create 0640 tomcat tomcat  # 创建新日志文件的权限和所有者
    postrotate      # 轮转后执行的命令(通知Tomcat重新打开日志文件)
        /bin/kill -HUP `cat /var/run/tomcat.pid` 2>/dev/null || true
    endscript
}

手动触发轮转测试:

logrotate -f /etc/logrotate.d/tomcat
(2)通过logging.properties文件(Tomcat级轮转)

编辑$CATALINA_HOME/conf/logging.properties文件,修改java.util.logging.FileHandler配置:

java.util.logging.FileHandler.level = INFO
java.util.logging.FileHandler.pattern = ${catalina.base}/logs/catalina.%g.log  # 日志命名模式(%g为序号)
java.util.logging.FileHandler.limit = 10485760  # 单个日志文件最大10MB(10*1024*1024字节)
java.util.logging.FileHandler.count = 5         # 保留5个备份文件
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter

重启Tomcat使配置生效:

$CATALINA_HOME/bin/shutdown.sh && $CATALINA_HOME/bin/startup.sh

4. 日志过滤与分析

  • 过滤关键字:使用grep命令查找特定错误或关键词(如“ERROR”):
    tail -f catalina.out | grep "ERROR"  # 实时过滤ERROR日志
    
  • 提取时间段日志:使用sed命令截取指定时间范围的日志(如2025-10-01至2025-10-02):
    sed -n '/2025-10-01 00:00/,/2025-10-02 00:00/p' catalina.out > /tmp/tomcat_error.log
    
  • 系统日志整合:若Tomcat以systemd服务运行,可使用journalctl查看统一日志:
    journalctl -u tomcat.service -f  # 实时查看Tomcat系统日志
    

5. 日志清理

定期清理旧日志可避免磁盘空间耗尽,常用方法:

  • 手动清理:直接删除指定天数前的日志文件(如15天前):
    find $CATALINA_HOME/logs/ -mtime +15 -name "*.log" -exec rm -rf {} \;
    
  • 自动化清理:编写Shell脚本(如auto-del-logs.sh),并添加到crontab定时任务:
    #!/bin/bash
    find $CATALINA_HOME/logs/ -mtime +15 -name "*.*" -exec rm -rf {} \;
    
    添加定时任务(每天凌晨1点执行):
    crontab -e
    # 添加以下行
    0 1 * * * /path/to/auto-del-logs.sh
    

6. 减少日志输出(优化性能)

若不需要详细日志,可通过修改配置降低日志级别:

  • 修改logging.properties文件:调整根日志级别为WARNING(仅记录警告及以上级别日志):
    handlers = 1catalina.org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler
    .handlers = 1catalina.org.apache.juli.AsyncFileHandler
    1catalina.org.apache.juli.AsyncFileHandler.level = WARNING
    
  • 修改catalina.sh文件:在文件开头添加JAVA_OPTS参数,关闭调试日志:
    export JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.config.file=$CATALINA_HOME/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
    

以上方法覆盖了CentOS下Tomcat日志的查看、轮转、分析、清理全流程,可根据实际需求选择组合使用,确保日志管理的高效性和规范性。

0