0

I have a problem with nginx/logrotate. The problems is that nginx is logging access to 2 files (main and data).

I have the following contrab setting: 0 * * * * /usr/sbin/logrotate -f /home/orwell/orwell-setup/bin/logrotate-nginx

And the file "logrotate-nginx" has the following content:

/tmp/data.log {
    rotate 90
    daily
    missingok
    notifempty
    size 1
    sharedscripts
    postrotate
        [ ! -f /tmp/nginx.pid ] || kill -USR1 `cat /tmp/nginx.pid`
        MORE THINGS
    endscript
}


/tmp/main.log {
    rotate 90
    daily
    missingok
    notifempty
    size 1
    sharedscripts
    postrotate
        [ ! -f /tmp/nginx.pid ] || kill -USR1 `cat /tmp/nginx.pid`
        MORE THINGS
    endscript
}

The work is done in the two files, but there is a problem that nginx stops logging into those files. Both files are created, but they are empty.

Any ideas why nginx stop logging info to both files?

tzulberti
  • 113
  • 2
  • 6

2 Answers2

4

A bit late, but I've found it seems like its a bug in the USR1 signalling to nginx. According to the documentation it is meant to re-open the logs (http://wiki.nginx.org/LogRotation), but it doesn't appear to.

I've put a workaround in by sending a HUP instead, which will reload the configuration.

[ ! -f /tmp/nginx.pid ] || kill -HUP `cat /tmp/nginx.pid`

It appears to fix it, but if the USR1 call was working, it would be healthier to do that as its the minimal operation. HUP I don't think will drop any connections at least.

Andy
  • 3,865
  • 1
  • 20
  • 9
  • 2
    Mark this as correct answer, so that the community bot does not randomly poke the thread in order to get it answered, please. – 3molo Jun 27 '11 at 04:46
2

A bit late, but I've found it seems like its a bug in the USR1 signalling to nginx.

You must check rights for log folder. Nginx user must have execute/search privilege on that folder.

And logs are working after signal USR1:)

helper
  • 21
  • 2