linux運維之logrotate日志輪替——對nginx日志進行輪替

linux系統上有一個非常好用的輪替服務——logrotate。通過這個服務,可以對日志文件進行輪替管理。當日志文件過大時,可以對其進行切割成多個小的日志文件,還可以對其進行壓縮處理。nginx默認的日志文件Access.log以及Error.log日志文件,是不會自行進行輪替的。所以,經常會用logrotate對nginx的日志進行輪替管理。

logrotate

對于logrotate這個程序的運行,是掛在系統的定時任務中每日執行的。

#?cat?/etc/cron.daily/logrotate? #!/bin/sh  /usr/sbin/logrotate?-s?/var/lib/logrotate/logrotate.status ……

下面,我們來看看logrotate的配置文件/etc/logrotate.conf。

#?通過man?logrotate查看更多信息  #?下面是默認配置 weekly?<p>在了解完logrotate的配置文件后,我們就可以自己弄一個日志進行輪替練習了。首先,我們準備一個日志文件</p><pre class="brush:php;toolbar:false">#?ll?logrotate_learn.log? -rwx------?1?www?www?223288003?Nov?12?09:05?logrotate_learn.log

這里,我們最好給該日志文件加上-a屬性,只能向其新增內容。

#?chattr?+a?logrotate_learn.log

接下來,我們要思考該日志文件的輪替規則了。這里,我們打算每周進行一次輪替并對輪替的文件進行壓縮處理,并且當文件大小超過10M時候才進行輪替,另外,保留7份日志文件。這里,還有一點需要注意的是。因為該文件有a屬性,所以輪替前需要將a屬性刪除,然后在輪替完成后再將a屬性加上去。那么,現在我們需要寫配置規則了

vim?/etc/logrotate.d/logrotate_learn  #?輪替練習 /root/logrotate_learn.log { ????missingok ????notifempty ????weekly ????rotate?7 ????size=10M ????create?0700?www?www ????compress? ????sharedscripts ????prerotate ???????/usr/bin/chattr?-a?/root/logrotate_learn.log ????endscript ????sharedscripts ????postrotate ????????/usr/bin/chattr?+a?/root/logrotate_learn.log ????endscript }

下面,我們來進行輪替。

#?logrotate?[-vf]?logfile? 選項與參數: -v?:啟動顯示模式,會顯示logrotate?運作的過程喔! -f?:不論是否符合,強制每個日志文件都進行rotate?的動作!  #?logrotate?-v?/etc/logrotate.d/logrotate_learn? reading?config?file?/etc/logrotate.d/logrotate_learn Allocating?hash?table?for?state?file,?size?15360?B ……  #?ll?logrotate_learn.log* -rwx------?1?www?www????????0?Nov?12?10:15?logrotate_learn.log -rwx------?1?www?www?20974585?Nov?12?10:15?logrotate_learn.log.1.gz

對nginx日志文件進行輪替管理

學完后如果對日志文件進行輪替管理后,我們現在進入實戰練習。

#?ll?/www/wwwlogs/ total?1852452 -rwx------?1?www?www????350288?Nov?12?02:50?access.log -rwx------?1?www?www??14016937?Nov?11?22:44?isunshinenet.com.error.log -rwx------?1?www?www?300416647?Nov?11?22:44?isunshinenet.com.log -rwx------?1?www?www?????????0?Sep?30?09:57?nginx_error.log

我們需要對這四個日志文件進行輪替管理,首先,創建好配置文件。

#?對nginx日志文件進行呢輪替 /www/wwwlogs/access.log /www/wwwlogs/nginx_error.log /www/wwwlogs/isunshinenet.com.error.log /www/wwwlogs/isunshinenet.com.log { ????missingok ????notifempty ????daily ????rotate?7 ????size=1M ????create?0700?www?www ????sharedscripts ????postrotate ?if?[?-f?/www/server/nginx/logs/nginx.pid?];then ????/www/server/nginx/sbin/nginx?-s?reload?? ?fi ????endscript }

至此,我們就完成了對nginx日志的輪替管理了,每天系統都會自行檢測,需要進行輪替時,就會進行輪替管理。

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享