NginX 日志轮换

Joh*_*ler 10 nginx logging logrotate

我在同一台服务器上通过 NginX 为几个不同的域提供服务,它们每个都记录到自己的文件中。我需要设置一个脚本来旋转,并压缩这些文件并将其添加到 cron。

我知道我必须做一些事情才能让 NginX 在移动旧的日志文件后打开一个新的日志文件。有人可以给我安全轮换 nginx 日志文件的程序吗?我猜我需要使用 logrotate,我该如何配置它?

系统:

  • Ubuntu 9.04 服务器版。
  • nginx/0.7.61

Jör*_*tag 18

它已成为一个排序的Unix的守护进程之间的非正式半的标准,他们冲洗和/或轮换的日志文件,当你给他们一个挂起信号(SIGHUP)。Nginx 并没有完全遵循此约定,但它以USR1相同的方式响应信号,如 Nginx 网站上标题为Log Rotation 的文档所述。

所以,你可以尝试类似的东西

kill -s USR1 `pidof nginx`
Run Code Online (Sandbox Code Playgroud)


小智 11

logrotating nginx 日志:

# nginx SIGUSR1: Re-opens the log files.
/opt/nginx/logs/access.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
 endscript 
}

/opt/nginx/logs/error.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate  
    test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
  endscript
}
Run Code Online (Sandbox Code Playgroud)

logrotating rails 生产日志:

/home/app_user/apps/railsapp/log/production.log {
  missingok
  notifempty
  delaycompress
  sharedscripts
  postrotate
    test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
  endscript
}
Run Code Online (Sandbox Code Playgroud)