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