1. 程式人生 > >nginx系列4:日誌管理

nginx系列4:日誌管理

日誌切割

如果使用預設日誌配置,經過一段時間執行後,access.log和error.log檔案會變得非常大,使維護和排查問題變得不便,所以非常有必要做日誌切割。

通常的思路是:使用nginx的-s reopen命令,結合linux系統的crontab定時任務命令,弄一個定時任務按時切割日誌檔案。

每天定時執行指令碼切割日誌檔案。

image

附:bash指令碼

#!/bin/bash
#Rotate the nginx logs to prevent a single logfile from consuming too much disk space.
LOGS_PATH=/usr/local/nginx/logs/history
CUR_LOGS_PATH
=/usr/local/nginx/logs YESTERDAY=$(date -d "yesterday" +%Y-%m-%d) mv ${CUR_LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log mv ${CUR_LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log #向nginx master程序傳送USR1訊號,USR1訊號是重新開啟日誌檔案,相當於-s reopen命令 kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)

access日誌的詳細用法

1,log_format指令用來定義日誌的格式,作用在上下文http中。

image

預設的main日誌格式如下:

image

2,定義日誌檔案,通過access_log指令來完成。

image

預設的access_log是放在http上下文中,我們也可以為每個server塊定義access_log,如下圖。

image

參考資料

  1. crontab:相當於Windows下的任務計劃,參考:https://www.cnblogs.com/wt645631686/p/6868672.html
  2. bash指令碼:是Linux下Shell的其中一種,類似於Windows下Shell的cmd,參考:https://blog.csdn.net/cy1070779077/article/details/85034083
    http://www.runoob.com/linux/linux-shell.html