Logrotate日誌儲存
阿新 • • 發佈:2021-12-15
1、
cat /etc/logrotate.conf # 底下的設定是 "logrotate 的預設值" ,如果別的檔案設定了其他的值, # 就會以其它檔案的設定為主 weekly //預設每一週執行一次rotate輪轉工作 rotate 4 //保留多少個日誌檔案(輪轉幾次).預設保留四個.就是指定日誌檔案刪除之前輪轉的次數,0 指沒有備份 create //自動建立新的日誌檔案,新的日誌檔案具有和原來的檔案相同的許可權;因為日誌被改名,因此要建立一個新的來繼續儲存之前的日誌 dateext //這個引數很重要!就是切割後的日誌檔案以當前日期為格式結尾,如xxx.log-20131216這樣,如果註釋掉,切割出來是按數字遞增,即前面說的 xxx.log-1這種格式 compress //是否通過gzip壓縮轉儲以後的日誌檔案,如xxx.log-20131216.gz ;如果不需要壓縮,註釋掉就行 include /etc/logrotate.d # 將 /etc/logrotate.d/ 目錄中的所有檔案都載入進來 /var/log/wtmp { //僅針對 /var/log/wtmp 所設定的引數 monthly //每月一次切割,取代預設的一週 minsize 1M //檔案大小超過 1M 後才會切割 create 0664 root utmp //指定新建的日誌檔案許可權以及所屬使用者和組 rotate 1 //只保留一個日誌. } # 這個 wtmp 可記錄使用者登入系統及系統重啟的時間 # 因為有 minsize 的引數,因此不見得每個月一定會執行一次喔.要看檔案大小。 #/etc/logrotate.d/ #logrotate.conf 才主要的配置檔案,logrotate.d 是一個目錄,該目錄裡的所有檔案都會被主動的讀入/etc/logrotate.conf中執行
compress 通過gzip 壓縮轉儲以後的日誌 nocompress 不需要壓縮時,用這個引數 copytruncate 用於還在開啟中的日誌檔案,把當前日誌備份並截斷 nocopytruncate 備份日誌檔案但是不截斷 create mode owner group 轉儲檔案,使用指定的檔案模式建立新的日誌檔案 nocreate 不建立新的日誌檔案 delaycompress 和 compress 一起使用時,轉儲的日誌檔案到下一次轉儲時才壓縮 nodelaycompress 覆蓋 delaycompress 選項,轉儲並壓縮 errors address 專儲時的錯誤資訊傳送到指定的Email 地址 ifempty 即使是空檔案也轉儲,是預設選項。 notifempty 如果是空檔案的話,不轉儲 mail address 把轉儲的日誌檔案傳送到指定的E-mail 地址 nomail 轉儲時不傳送日誌檔案 olddir directory 轉儲後的日誌檔案放入指定的目錄,必須和當前日誌檔案在同一個檔案系統 noolddir 轉儲後的日誌檔案和當前日誌檔案放在同一個目錄下 prerotate/endscript 在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行 postrotate/endscript 在轉儲以後需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行 daily 指定轉儲週期為每天 weekly 指定轉儲週期為每週 monthly 指定轉儲週期為每月 size 大小 指定日誌超過多大時,就執行日誌轉儲 rotate count 指定日誌檔案刪除之前轉儲的次數,0 指沒有備份,5 指保留5個備份 Missingok 如果日誌不存在,提示錯誤 Nomissingok如果日誌不存在,繼續下一次日誌,不提示錯誤
logrotate [OPTION...] <configfile>
-d, --debug :debug模式,測試配置檔案是否有錯誤。
-f, --force :強制轉儲檔案。
-m, --mail=command :壓縮日誌後,傳送日誌到指定郵箱。
-s, --state=statefile :使用指定的狀態檔案。
-v, --verbose :顯示轉儲過程。
1、定義tomcat的分割配置 [root@centos_10 logrotate.d]# cat tomcat /usr/local/tomcat/logs/* { delaycompress compress daily copytruncate create ifempty olddir /data/tomcat_log/days rotate 0664 root root } 2、日誌分割指令碼 [root@centos_10 ]# vim /usr/local/sbin/logrotate-tomcat.sh #!/bin/bash #建立轉儲日誌壓縮存放目錄 mkdir -p /data/tomcat_logs/days #手工對tomcat日誌進行切割轉換 /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat #當前時間 time=$(date -d "yesterday" +"%Y-%m-%d") #進入轉儲日誌存放目錄 cd /data/tomcat_logs/days #對目錄中的轉儲日誌檔案的檔名進行統一轉換 for i in $(ls ./ | grep "^\(.*\)\.[[:digit:]]$")do mv ${i} ./$(echo ${i}|sed -n 's/^\(.*\)\.\([[:digit:]]\)$/\1/p')-$(echo $time) done #對轉儲的日誌檔案進行壓縮存放,並刪除原有轉儲的日誌檔案,只儲存壓縮後的日誌檔案。以節約儲存空間 for i in $(ls ./ | grep "^\(.*\)\-\([[:digit:]-]\+\)$") do tar jcvf ${i}.bz2 ./${i} rm -rf ./${i} done #只保留最近7天的壓縮轉儲日誌檔案 find /data/tomcat_logs/days/* -name "*.bz2" -mtime 7 -type f -exec rm -rf {} \; find /data/tomcat_logs/days/* -name "*.bz2" -mtime 7 -type f | xargs rm -rf 3、crontab定時執行 crontab -e #logrotate 0 0 * * * /bin/bash -x /usr/local/sbin/logrotate-tomcat.sh > /dev/null 2> 4、測試 [root@centos_10 ]# /bin/bash -x /usr/local/sbin/logrotate-tomcat.sh [root@centos_10 ]# cd /data/tomcat_logs/days [root@centos_10 days]# ls huantest.access_log-2017-01-18.bz2
在/etc/cron.daily/logrotate指令碼中將 -t 引數替換成 -f 引數
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -f logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
重啟crond服務