CentOS Linux使用logrotate分割管理日誌
logrotate程序是一個日誌文件管理工具。用於分割日誌文件,刪除舊的日誌文件,並創建新的日誌文件,起到“轉儲”作用。可以節省磁盤空間。
logrotate命令格式:
logrotate [OPTION...] <configfile>
-d, --debug :debug模式,測試配置文件是否有錯誤。
-f, --force :強制轉儲文件。
-m, --mail=command :發送日誌到指定郵箱。
-s, --state=statefile :使用指定的狀態文件。
-v, --verbose :顯示轉儲過程。
logrotate的配置文件是/etc/logrotate.conf。查看缺省配置情況:
cat /etc/logrotate.conf
顯示如下:
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp -- we‘ll rotate them here
/var/log/wtmp {
monthly
minsize 1M
create 0664 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
簡單說明:
weekly :所有的日誌文件每周轉儲一次。
rotate 4 :轉儲的文件分為4份。
create :logrotate自動創建新的日誌文件。
compress :壓縮日誌文件。默認是註釋掉的。
include /etc/logrotate.d :讀入/etc/logrotate.d目錄下的日誌轉儲參數,當系統中安裝了RPM軟件包時,RPM包的日誌轉儲參數一般會自動建立在/etc/logrotate.d目錄下。
/var/log/wtmp段 :對/var/log/wtmp日誌轉儲的配置。
monthly: 日誌文件將按月輪循。其它可用值為‘daily’,‘weekly’或者‘yearly’。
rotate 5: 一次將存儲5個歸檔日誌。對於第六個歸檔,時間最久的歸檔將被刪除。
compress: 在輪循任務完成後,已輪循的歸檔將使用gzip進行壓縮。
delaycompress: 總是與compress選項一起用,delaycompress選項指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進行。這在你或任何軟件仍然需要讀取最新歸檔時很有用。
missingok: 在日誌輪循期間,任何錯誤將被忽略,例如“文件無法找到”之類的錯誤。
notifempty: 如果日誌文件為空,輪循不會進行。
create 644 root root: 以指定的權限創建全新的日誌文件,同時logrotate也會重命名原始日誌文件。
postrotate/endscript: 在所有其它指令完成後,postrotate和endscript裏面指定的命令將被執行。在這種情況下,rsyslogd 進程將立即再次讀取其配置並繼續運行
使用logrotate管理lnmp一鍵安裝包中nginx的連接日誌,lnmp日誌文件在/home/wwwlogs目錄下。
建立配置文件:
模板一
/var/log/log-file {
monthly
rotate 5
compress
delaycompress
missingok
notifempty
create 644 root root
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
模板二
vim /etc/logrotate.d/nginx
輸入如下:
/home/wwwlogs/access.log /home/wwwlogs/nginx_error.log {
notifempty
daily
rotate 5
sharedscripts
postrotate
/bin/kill -HUP `/bin/cat /usr/local/nginx/logs/nginx.pid`
endscript
}
模板三(我們想要讓舊日誌文件以創建日期命名,這可以通過添加dateext常熟實現。)
/var/log/log-file {
monthly
rotate 5
dateext
create 644 root root
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
說明:
notifempty :如果是空文件的話,不轉儲。
daily :日誌文件每天轉儲一次。
rotate 5 ;轉儲文件分為5份。
postrotate/endscript :日誌轉儲後執行的腳本。這裏用來讓nginx重新生成日誌文件。nginx.pid裏存的是nginx的主進程號。
執行logrotate:
/usr/sbin/logrotate -vf /etc/logrotate.conf
如果沒有報錯,生成了轉儲文件,nginx正常訪問,就OK了。
logrotate如何自動執行:
在/etc/cron.daily目錄下有logrotate執行的腳本。通過crontab程序每天執行一次。
配置完需要調用
logrotate /etc/logrotate.conf 或者指定 logrotate /etc/logrotate.d/http
本文出自 “IT阿寶” 博客,請務必保留此出處http://907832555.blog.51cto.com/4033334/1965283
CentOS Linux使用logrotate分割管理日誌