1. 程式人生 > >CentOS Linux使用logrotate分割管理日誌

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分割管理日誌