Назад | Перейти на главную страницу

Файл журнала 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. Это подробно покажет сообщения об ошибках. Также проверьте владельцев папки журнала.

Это может быть связано с этой ошибкой: https://bugs.launchpad.net/nginx/+bug/1450770

Получил ответ в ссылке на ошибку, опубликованной 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