nginx如何做日誌切割
高洛峰
高洛峰 2017-05-16 17:29:36
0
5
558

Nginx的log都是寫在一個檔案裡的,我需要每天一個Nginx Log
網路上看到很多辦法,都是寫腳本,定式切割Log檔
Nginx自己不能做日誌切割這件事嗎?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(5)
phpcn_u1582

確認cron正在運行

service crond status

修改設定檔

vi /etc/crontab

確認定時任務

vi /etc/cron.daily/logrotate

編寫logrotate設定檔 vi /etc/logrotate.d/nginx

/var/log/nginx/*.log {
        #指定转储周期为每天
        daily
        missingok
        #指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
        rotate 5
        #compress
        #delaycompress
        #如果是空文件的话,不转储
        notifempty
        #create 640 root adm
        sharedscripts
        postrotate
                [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
        endscript
}

測試配置

/usr/sbin/logrotate -f /etc/logrotate.d/nginx
刘奇

系統管理員的日誌需求千變萬化,Nginx為了自己的輕量,確實就不操心日誌管理的事了。

官方的LogRotation Wiki頁面

估計你也查到了,可以用自己的腳本或logrotate。

我想大声告诉你

nginx的日誌檔案沒有rotate功能。如果你不處理,日誌檔案將變得越來越大,還好我們可以寫一個nginx日誌切割腳本來自動切割日誌檔案。

第一步就是重新命名日誌文件,不用擔心重命名後nginx找不到日誌文件而丟失日誌。在你未重新開啟原名的日誌檔案前,nginx還是會向你重新命名的檔案寫日誌,linux是靠檔案描述子而不是檔案名稱定位檔案。

第二步驟向nginx主進程發送USR1訊號。

nginx主程序接到訊號後會從設定檔讀取日誌檔案名稱,重新開啟日誌檔案(以設定檔中的日誌名稱命名),並以工作行程的使用者作為日誌檔案的擁有者。

重新開啟日誌檔案後,nginx主進程會關閉重名的日誌檔案並通知工作進程使用新開啟的日誌檔案。

工作進程立刻開啟新的日誌檔案並關閉重名的日誌檔案。

然後你就可以處理舊的日誌檔案了。

nginx日誌按日期自動切割腳本如下

  • nginx日誌切割腳本
  • author: http://www.nginx.cn
  • !/bin/bash
  • 設定日誌檔案存放目錄

logs_path="/usr/local/nginx/logs/"

  • 設定pid檔

pid_path="/usr/local/nginx/nginx.pid"

  • 重新命名日誌檔

mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log

  • 向nginx主進程發送訊號重新開啟日誌

kill -USR1 cat ${pid_path}

儲存以上腳本nginx_log.sh,或點此下載

crontab 設定作業

0 0 * * * bash /usr/local/nginx/nginx_log.sh
這樣就每天的0點0分把nginx日誌重新命名為日期格式,並重新產生今天的新日誌檔。

詳細出處參考:http://www.nginx.cn/255.html

世界只因有你

最簡單的辦法就是直接在設定檔中進行設定:

if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
    set $year ;
    set $month ;
    set $day ;
}
access_log  /home/wwwlogs/$year-$month-$day-bbs-access.log access;
Peter_Zhu

這個方法常常會產生不帶日期的文件,已經棄用

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!