歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 利用系統自帶的logrotate切割nginx日志

利用系統自帶的logrotate切割nginx日志

日期:2017/3/1 15:53:57   编辑:關於Linux
利用系統自帶的logrotate切割nginx日志 摘要: 這個東東可以切割任何日志,不僅僅是NGINX的log,很好用哦。 logrotate簡介 logrotate 程序是一個日志文件管理工具。用來把舊的日志文件刪除,並創建新的日志文件,我們把它叫做“轉儲”。我們可以根據日志文件的大小,也可以根據其天數來轉 儲,這個過 程一般通過 cron 程序來執行。logrotate 程序還可以用於壓縮日志文件,以及發送日志到指定的E-mail 。系統自帶的日志切割的配置文件在/etc/logrotate.conf 和 /etc/logrotate.d/syslog 裡面,觀察一下。 作用: 如果日志文件比較大,MV是需要時間的,這段時間內的日志有可能丟失。logrotate可以在切割日志的同時,不丟失數據。 vi /etc/logrotate.d/nginx /usr/local/nginx/logs/*.log { daily rotate 7 missingok notifempty dateext sharedscripts postrotate if [ -f /usr/local/nginx/logs/nginx.pid ]; then kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` fi endscript } 腳本解釋: /usr/local/nginx/logs/*.log { nginx的日志路徑 /usr/local/nginx/logs/www.qq.com.log error.log { 可以指定日志,用空格分開 daily 每天輪詢 rotate 7 保留7天 missingok 如果日志丟失,不報錯繼續滾動下一個日志 notifempty 當日志為空時不進行滾動 dateext 在文件末尾添加當前日期 sharedscripts 運行postrotate腳本 postrotate 腳本內容,給NGINX發信號要求重新生成日志,如果nginx沒開起來就不操作 if [ -f /usr/local/nginx/logs/nginx.pid ]; then kill -USR1 `cat /usr/local/nginx/logs/nginx.pid` fi endscript } 測試,有生成就代表配置成功 /usr/sbin/logrotate -f /etc/logrotate.d/nginx 配置crontab 00 00 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx 也可以放入/etc/cron.daily/ 一定要注意:1、在測試切割是否成功,一定要先備份一下!如果想保留全部日志,設置一個很大的值比如3650,如果你 注釋rotate或者不加,那麼不會切割成功。 2、crond運行 附 logrotate 的配置文件是 /etc/logrotate.conf。主要參數如下表: compress 通過gzip 壓縮轉儲以後的日志 nocompress 不需要壓縮時,用這個參數 copytruncate 用於還在打開中的日志文件,把當前日志備份並截斷 nocopytruncate 備份日志文件但是不截斷 create mode owner group 轉儲文件,使用指定的文件模式創建新的日志文件 nocreate 不建立新的日志文件 delaycompress 和 compress 一起使用時,轉儲的日志文件到下一次轉儲時才壓縮 nodelaycompress 覆蓋 delaycompress 選項,轉儲同時壓縮。 errors address 專儲時的錯誤信息發送到指定的Email 地址 ifempty 即使是空文件也轉儲,這個是 logrotate 的缺省選項。 notifempty 如果是空文件的話,不轉儲 mail address 把轉儲的日志文件發送到指定的E-mail 地址 nomail 轉儲時不發送日志文件 olddir directory 轉儲後的日志文件放入指定的目錄,必須和當前日志文件在同一個文件系統 noolddir 轉儲後的日志文件和當前日志文件放在同一個目錄下 prerotate/endscript 在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行 postrotate/endscript 在轉儲以後需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行 daily 指定轉儲周期為每天 weekly 指定轉儲周期為每周 monthly 指定轉儲周期為每月 rotate count 指定日志文件刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份 tabootext [+] list 讓logrotate 不轉儲指定擴展名的文件,缺省的擴展名是:.rpm-orig, .rpmsave, v, 和 ~ size size 當日志文件到達指定的大小時才轉儲,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).
Copyright © Linux教程網 All Rights Reserved