linux logrotate進行日誌分割

來源:互聯網
上載者:User
logrotate日誌分割配置:
# cat /etc/logrotate.d/nginx 
/data/nginx_logs/*.access_log         #nginx日誌所在目錄
{
nocompress                                     #不對記錄檔進行轉儲壓縮
daily                                                 #指定轉儲周期為每天
copytruncate                                   #用於還在開啟中的記錄檔,把當前記錄備份並截斷
create                                              #建立新的記錄檔
ifempty                                            #即使是空檔案也轉儲
olddir /data/nginx_logs/days            #轉儲後的記錄檔放入指定的目錄,必須和當前記錄檔在同一個檔案系統
rotate 0                                           #指定記錄檔刪除之前轉儲的次數,0 指沒有備份,5 指保留5個備份
}


#####################################################################
日誌分割指令碼:
#!/bin/bash
#建立轉儲日誌壓縮存放目錄
mkdir -p /data/nginx_logs/days
#手工對nginx日誌進行切割轉換
/usr/sbin/logrotate -vf /etc/logrotate.d/nginx 
#目前時間
time=$(date -d "yesterday" +"%Y-%m-%d")
#進入轉儲日誌存放目錄
cd /data/nginx_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/nginx_logs/days/* -name "*.bz2" -mtime 7 -type f -exec rm -rf {} \;

######################################################
#給指令碼附上執行許可權,放到crontab裡執行
#logrotate
0 0 * * * /usr/local/sbin/logrotate-nginx.sh > /dev/null 2>&1 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.