2016-05-12 62 views
1

我有我的我的應用程序運行在Apache Tomcat上。我想爲apache創建的日誌配置logrotate。使用logrotate來旋轉Apache日誌

我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選項。

如:localhost.2016-02-26.log

我想logrotate的進來和zip以前的日誌,並刪除它們(只保留壓縮文件),並離開當前日誌,因爲它是。

附錄:

剛剛發現的logrotate不適合旋轉的在他們的時間戳日誌。我正在尋找可以讓logrotate與這些日誌或其他更適合旋轉日誌的旋轉實用程序一起工作的方法。

回答

0

我創建了我自己的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 {} \;