日誌的關鍵性就不用多說了,對於**的日誌來說,如果**訪問量較大,每天產生的日誌也是非常龐大的,nginx預設都是將日誌寫入到指定的日誌檔案中,如果日誌檔案變得非常大,那麼自然的寫入日誌就較慢,如果我們需要分析日誌,對於幾百兆或者幾g的檔案,分析起來也很不方便,這裡我採用的是系統自帶日誌輪詢logrotate 對nginx 日誌進行割切。
logrotate配置
logrotate 的主配置檔案在/etc/logrotate.conf 主配置檔案無需進行調整配置,保持預設即可。
如果使用了一鍵安裝包配置的環境,可能在/etc/logrotate.d 下已經生成了檔案nginx ,如果沒有,則建立該檔案:
vim /etc/logrotate.d/nginx配置選項說明:/data/weblogs/*.log
/data/weblogs/*.log # 需要切割的日誌檔案,可以指定為某個檔名進行切割
weekly #指定轉儲週期為每週,對應的 daily:指定轉儲週期為每天,monthly:指定轉儲週期為每月
rotate 7 #指定日誌檔案刪除之前轉儲的次數,0 指沒有備份,7 指保留7 個備份
missingok #如果指定的目錄不存在,logrotate會報錯,此項用來關閉報錯
nocompress # 這裡是不進行壓縮,如果需要將切割的日誌進行壓縮,可以設定為compress
notifempty #如果是空檔案的話,不轉儲
sharedscripts #所有的日誌檔案都輪轉完畢後統一執行一次指令碼
postrotate/endscript #在轉儲以後需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
postrotate 中的內容即為:nginx程序傳送usr1訊號使其重新開啟日誌並寫入,不會重啟服務,也不會導致最新寫入的日誌丟失
如果日誌分類存放到不同的目錄下可以這樣設定:
/data/weblogs/*.log測試是否正確執行/data/weblogs/cnyunwei/*.log
{weekly
rotate 7
.....
[root@aliyun weblogs]#/usr/sbin/logrotate -f /etc/logrotate.d/nginx執行上述命令後可以檢視當前日誌檔案下生成了www.susecui.cn.log-20160808 的檔案,如果是開啟了壓縮,則會生成www.susecui.cn.log-20160808.gz 的壓縮檔案
建立任務計畫執行命令
如果是設定了每天進行切割日誌,那麼就需要單獨設定計畫任務,預設設定為一周切割的情況下不需要設定計畫任務,logrotate 主配置檔案中已經定義了每週會進行輪詢。
crontab -e乾貨:《linux就該這麼學》10 2 * * 6 /usr/sbin/logrotate -f /etc/logrotate.d/nginx
nginx日誌詳解和日誌切割
我們觀察nginx的server段,可以看到如下類似資訊 access log logs host.access.log main 這說明 該server,它的訪問日誌的檔案是 logs host.access.log 使用的 格式 main 格式.除了main格式,你可以自定義其他格式.main格...
nginx日誌切割
web 訪問日誌 access log 記錄了所有外部客戶端對web伺服器的訪問行為,包含了客戶端ip,訪問日期,訪問的url資源,伺服器返回的http狀態碼等重要資訊。一條典型的web訪問日誌如下 規劃 1 要解決問題 2 nignx沒有自動分開檔案儲存日誌的機制。由於nginx它不會幫你自動分檔...
nginx 日誌切割
直接在nginx配置檔案中,配置日誌迴圈,而不需使用logrotate或配置cron任務。需要使用到 time iso8601 內嵌變數來獲取時間。time iso8601格式如下 2015 08 07t18 12 02 02 00。然後使用正規表示式來獲取所需時間的資料。使用下面的 塊 1 2 3...