У меня проблемы с файлами журнала 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