【问题标题】:using logrotate to rotate apache logs使用 logrotate 旋转 apache 日志
【发布时间】:2016-09-08 12:21:03
【问题描述】:

我的应用程序在 apache tomcat 上运行。我想为 apache 创建的日志配置 logrotate。

我的 logrotate 配置如下:

/var/company/apache-tomcat/logs/*.log /var/company/apache-tomcat/logs/*.txt {
    su root root
    copytruncate
    compress
    dateext
    dateformat -%s
    extension gz
    missingok
    notifempty
    rotate 90
    daily
}

我刚刚意识到我不需要 apache 日志的 copytruncate 选项,因为 apache 似乎每天都会创建一个新的日志文件,并附加一个时间戳。

例如:localhost.2016-02-26.log

我希望 logrotate 进入并压缩以前的日志并删除它们(仅保留压缩文件)并保持当前日志不变。

附录:

刚刚发现 logrotate 不适合轮换带有时间戳的日志。我正在寻找可以使 logrotate 与此类日志或其他更适合轮换此类日志的实用程序一起使用的方法。

【问题讨论】:

    标签: tomcat logging logrotate log-rotation


    【解决方案1】:

    我创建了自己的 bash 脚本来为我执行此操作。它从 cron 作业运行并压缩模式文件并删除超过特定天数的文件:

    #!/bin/bash
    # Compress logs and run garbage collection
    
    ME=$(basename $0)
    
    usage() {
      echo "Usage:"
      echo "  $ME <log_path> <garbage_collection_days>"
      echo "Example:"
      echo "  $ME \"/path/to/logfile.log-???????\" 21"
      echo
    }
    
    # sanity checking
    [[ $# -ne 2 ]] && usage && exit 1
    
    file_pattern="${1}"
    gc_days=$2
    
    # compress logfiles that are older than one day
    nice -n 10 find $file_pattern -mtime +1 -exec gzip {} \;
    
    # garbage collection
    find $(dirname $file_pattern)/*.gz -mtime +$gc_days -exec rm {} \;
    

    【讨论】:

      猜你喜欢
      • 2019-12-12
      • 2019-06-04
      • 1970-01-01
      • 2019-07-03
      • 2013-03-17
      • 2018-03-01
      • 2015-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多