Logging

NginX 日誌輪換

  • August 31, 2017

我在同一台伺服器上通過 NginX 為幾個不同的域提供服務,它們每個都記錄到自己的文件中。我需要設置一個腳本來旋轉,壓縮這些文件並將其添加到 cron。

我知道一旦我移動舊的日誌文件,我必須做一些事情讓 NginX 打開一個新的日誌文件。有人可以給我安全輪換 nginx 日誌文件的程序嗎?我猜我需要使用 logrotate,我該如何配置它?

系統:

  • Ubuntu 9.04 伺服器版。
  • nginx/0.7.61

當您向它們發送掛斷信號SIGHUP(Nginx 並沒有完全遵循這個約定,但它以USR1相同的方式響應信號,如 Nginx 網站上標題為Log Rotation的記錄。

所以,你可以嘗試類似

kill -s USR1 `pidof nginx`

logrotating nginx 日誌:

# nginx SIGUSR1: Re-opens the log files.
/opt/nginx/logs/access.log {
 missingok
 notifempty
 delaycompress
 sharedscripts
 postrotate
   test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
endscript 
}

/opt/nginx/logs/error.log {
 missingok
 notifempty
 delaycompress
 sharedscripts
 postrotate  
   test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
 endscript
}

logrotating rails 生產日誌:

/home/app_user/apps/railsapp/log/production.log {
 missingok
 notifempty
 delaycompress
 sharedscripts
 postrotate
   test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
 endscript
}

引用自:https://serverfault.com/questions/284729