debian

如何清理过期的Tomcat日志

小樊
42
2025-02-19 17:14:44
栏目: 智能运维

要清理过期的Tomcat日志,您可以采取以下几种方法:

手动清理

  1. 查找日志文件: 使用 df -h 命令检查磁盘空间,确定是否需要清理日志。 使用 cd / 进入根目录,使用 du -sh * 列举出所有目录和文件的占用大小情况,找到占用空间最大的目录。

  2. 删除日志文件: 使用 rm -rf 文件名/目录名 命令删除不需要的日志文件。删除前请确保文件路径正确,以免误删。

  3. 禁止日志输出: 编辑 catalina.sh 文件,注释掉日志输出路径,将日志输出到 /dev/null,从而避免生成新的日志文件。

使用脚本自动清理

  1. 创建清理脚本: 在Tomcat的 bin 目录下创建一个名为 clean.sh 的脚本文件,内容如下:

    #!/bin/bash
    LOGS_PATH="/path/to/tomcat/logs"
    DATE=$(date +%Y-%m-%d)
    DAYS=30 # 可以根据需要修改天数
    
    # 复制 catalina.out 按日期命名
    cp $LOGS_PATH/catalina.out $LOGS_PATH/catalina.$DATE.out
    
    # 清空 catalina.out
    echo "" > $LOGS_PATH/catalina.out
    
    # 删除30天以前的日志文件
    find $LOGS_PATH -mtime +$DAYS -name "catalina.*.out" -exec rm -rf {} \;
    find $LOGS_PATH -mtime +$DAYS -name "localhost.*.log" -exec rm -rf {} \;
    find $LOGS_PATH -mtime +$DAYS -name "localhost_access_log.*.txt" -exec rm -rf {} \;
    find $LOGS_PATH -mtime +$DAYS -name "catalina.*.log" -exec rm -rf {} \;
    find $LOGS_PATH -mtime +$DAYS -name "manager.*.log" -exec rm -rf {} \;
    find $LOGS_PATH -mtime +$DAYS -name "host-manager.*.log" -exec rm -rf {} \;
    find $LOGS_PATH -mtime +$DAYS -name "fileservice.log.*" -exec rm -rf {} \;
    
  2. 赋予脚本执行权限

    chmod 777 $LOGS_PATH/clean.sh
    
  3. 设置定时任务: 使用 crontab -e 添加定时任务,例如每天凌晨执行清理脚本:

    0 0 * * * /path/to/tomcat/logs/clean.sh
    

使用Log4j等日志框架

推荐使用Log4j、Logback等成熟的日志框架,通过配置文件灵活管理日志输出,可以自动切割和清理日志文件。

通过 logging.properties 配置文件

在Tomcat的 conf 目录下找到 logging.properties 文件,修改以下配置以设置日志保留天数:

handlers = 1catalina.org.apache.juli.AsyncFileHandler, 2localhost.org.apache.juli.AsyncFileHandler, 3manager.org.apache.juli.AsyncFileHandler, 4host-manager.org.apache.juli.AsyncFileHandler

1catalina.org.apache.juli.AsyncFileHandler.level = FINE
1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
1catalina.org.apache.juli.AsyncFileHandler.maxDays = 90

2localhost.org.apache.juli.AsyncFileHandler.level = FINE
2localhost.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
2localhost.org.apache.juli.AsyncFileHandler.prefix = localhost.
2localhost.org.apache.juli.AsyncFileHandler.maxDays = 90

3manager.org.apache.juli.AsyncFileHandler.level = FINE
3manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
3manager.org.apache.juli.AsyncFileHandler.prefix = manager.
3manager.org.apache.juli.AsyncFileHandler.maxDays = 90

4host-manager.org.apache.juli.AsyncFileHandler.level = FINE
4host-manager.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
4host-manager.org.apache.juli.AsyncFileHandler.prefix = host-manager.
4host-manager.org.apache.juli.AsyncFileHandler.maxDays = 90

通过以上方法,您可以有效地清理过期的Tomcat日志,优化服务器性能和管理便捷性。

0
看了该问题的人还看了