web-dev-qa-db-ja.com

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ファイルに変更を加えていません。

どうすれば解決できますか?

1
Luv33preet

Logroateをデバッグおよび強制モードで実行します。 logrotate --force -d /etc/logrotate.d/nginx。これにより、エラーメッセージが詳細に表示されます。ログフォルダの所有者も確認してください。

このバグに関連している可能性があります: https://bugs.launchpad.net/nginx/+bug/145077

1
Tux_DEV_NULL

Tux_DEV_NULLによって投稿されたバグリンクで答えを得ました。

Nginxはローテーション後にいくつかの問題に直面しているようです。

そのため、回転後のセクションにいくつかの変更を加える必要がありました。

 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
0
Luv33preet