對于web服務器日志切割是一個非常重要的日常事情了,但有很多的朋友對于日志切割處理不好或不知道如何處理,下文php粉絲網小伙伴就給各位整理一篇志切割和定時刪除舊日志例子.
在nginx日志切割方面,我的方法和其他人用的方法有一些不一樣,但對于我這種方法,如果有人覺得不好,可以給我提出,謝謝.
nginx日志切割,我是直接寫的一個簡單的shell實現的,內容如下:
- mv /usr/local/nginx/logs/abc.log /www/logbak/abc`date +%Y%m%d%H%M`.log
- /usr/local/nginx/sbin/nginx -s reload
這樣執行以后,就會在/www/logbak目錄下生成日志文件,你可以在/etc/crontab 里把執行這個shell的任務寫上去,可以一小時執行一次,也可以每天執行一次,也可以一周執行一次,這個就看自己的需要了.
我這里是每天早上8點執行,生成的文件格式是這樣的:abc201111090801.log,所以我就根據文件的規律,找到刪除日志文件的方法,代碼如下:
rm -f /www/logbak/abc`date '+%Y%m%d' -d ' -10 day'`*.log
這個也寫到shell腳本里,然后每天執行一次,每天就回去/www/logbak目錄里找當前時間之前10天的文件,并刪除.
再補充一個例子:
1.定義日志輪滾策略,代碼如下:
- # vim nginx-log-rotate
- /data/weblogs/*.log {
- nocompress
- daily
- copytruncate
- create
- notifempty
- rotate 7
- olddir /data/weblogs/old_log
- missingok
- dateext
- postrotate
- /bin/kill -HUP `cat /var/run/nginx.pid 2> /dev/null` 2> /dev/null || true
- endscript //Vevb.com
- }
[warning]/data/weblogs/*.log使用通配符時,/data/weblogs/目錄下的所有匹配到的日志文件都將切割,如果要切割特定日志文件,就指定到該文件.[/warning]
2.設置計劃任務,代碼如下:
- # vim /etc/crontab
- 59 23 * * * root ( /usr/sbin/logrotate -f /PATH/TO/nginx-log-rotate)
這樣每天23點59分鐘執行日志切割.
新聞熱點
疑難解答