Nginx won't reopen log files.
Michael Lustfield
michael at profarius.com
Sat Feb 12 11:56:02 MSK 2011
On Fri, 11 Feb 2011 10:50:41 +0300
Igor Sysoev <igor at sysoev.ru> wrote:
> On Thu, Feb 10, 2011 at 06:04:41PM -0600, Michael Lustfield wrote:
> > Recently I noticed that logrotate does not actually rotate the files
> > correctly. I noticed this in 0.8.54.
> >
> > The issue seems to be that neither -USR1 or -s reopen will reopen the log
> > files after they've been rotated. I'm not sure if this specific to the
> > version packaged in Debian but I've seen it as an issue on both Ubuntu and
> > Debian.
> >
> > Below is what I tried to do to figure out what's going on...
> >
> > ### Clean slate
> > root at liber:/var/log/nginx# /etc/init.d/nginx stop
> > Stopping nginx: nginx.
> > root at liber:/var/log/nginx# rm *
> >
> > ### Start Nginx: Creates new log files
> > root at liber:/var/log/nginx# /etc/init.d/nginx start
> > Starting nginx: nginx.
> > root at liber:/var/log/nginx# du access.log access.log.1
> > 8 access.log
> > du: cannot access `access.log.1': No such file or directory
> >
> > ### Force logrotate to run (which runs the kill -USR1)
> > root at liber:/var/log/nginx# logrotate -f /etc/logrotate.d/nginx
> >
> > ### Log files rotated
> > root at liber:/var/log/nginx# du access.log access.log.1
> > 0 access.log
> > 8 access.log.1
> >
> > ### At this point files should already be getting written to the new file
> > ### because of the -USR1 in the logrotate script
> > root at liber:/var/log/nginx# du access.log access.log.1
> > 0 access.log
> > 24 access.log.1
> >
> > ### To make sure the kill was run, we invoke it ourselves
> > root at liber:/var/log/nginx# kill -USR1 `cat /var/run/nginx.pid`
> >
> > ### And see that nginx still isn't using the new file
> > root at liber:/var/log/nginx# du access.log access.log.1
> > 0 access.log
> > 48 access.log.1
> >
> > ### Using the more proper approach
> > root at liber:/var/log/nginx# nginx -s reopen
> >
> > ### We get the same thing
> > root at liber:/var/log/nginx# du access.log access.log.1
> > 0 access.log
> > 68 access.log.1
> >
> > ### Trying a less appropriate option....
> > root at liber:/var/log/nginx# /etc/init.d/nginx reload
> > Reloading nginx configuration: nginx.
> >
> > ### It's finally reopened the files
> > root at liber:/var/log/nginx# du access.log access.log.1
> > 20 access.log
> > 68 access.log.1
> >
> >
> > Hopefully some smart people here can tell me what I'm doing wrong. :)
>
> What is in error_log ?
>
>
Sorry for the delay. I wound up redoing the server from scratch for a different
reason...
When the files are moved, I issue 'nginx -s reopen' This line is in error.log.
2011/02/12 02:48:45 [notice] 20115#0: signal process started
However, new errors still find there way into error.log.1.
I have these two lines in nginx.conf:
access_log /var/log/nginx/usage.log usage;
error_log /var/log/nginx/error.log;
The only other logging lines are for 'log_not_found off' in other location
blocks.
More information about the nginx-devel
mailing list