Nginx
nginx 日誌文件自動從 *.log 更改為 *.log.1
我在 nginx 日誌文件中遇到問題。
以前我只將日誌記錄到文件中,
access_log /var/log/nginx/infotrack_access.log rsyslog;
我將以下文件添加到我的
/etc/nginx/sites-available/alpha.conf
文件中,access_log syslog:server=localhost:514,tag=infotrack rsyslog;
添加此行後,我遇到的問題是在文件
infotrack_access.log
中生成日誌而不是文件infotrack_access.log.1
。這是 /etc/logrotate.d/nginx 文件,
/var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts prerotate if [ -d /etc/logrotate.d/httpd-prerotate ]; then \ run-parts /etc/logrotate.d/httpd-prerotate; \ fi \ endscript postrotate invoke-rc.d nginx rotate >/dev/null 2>&1 endscript }
當我重新載入或重新啟動 nginx 時,日誌會暫時變為
innfotrack_access.log
,但過了一會兒,日誌又會轉到infotrack_access.log.1
為什麼會這樣?我沒有對
/etc/nginx/nginx.conf
文件進行任何更改。我該如何解決?
在調試和強制模式下執行 logroate。
logrotate --force -d /etc/logrotate.d/nginx
. 這將詳細顯示錯誤消息。還要檢查日誌文件夾的所有者。
在 發布的錯誤連結中得到了答案
Tux_DEV_NULL
。看起來 nginx 在旋轉後面臨一些問題。
所以,我需要對 postrotate 部分進行一些更改,
postrotate #invoke-rc.d nginx rotate >/dev/null 2>&1 start-stop-daemon --stop --signal USR1 --quiet --pidfile /run/nginx.pid --name nginx endscript
或者對於某些人來說,這也有效,
postrotate #invoke-rc.d nginx rotate >/dev/null 2>&1 nginx -s reload endscript