6

可以在不重新启动 nginx 的情况下进行 logrotate(只需向 nginx 发送 USR1 信号它就会完成这项工作)。我想知道我的 Rails 应用程序(nginx 乘客)是否可行。仅仅为了进行 logrotate 就重新启动我的 rails 应用程序是不值得的。

4

2 回答 2

28

logrotate 配置很简单

/path/to/rails_apps/*/shared/log/*.log {
  daily
  missingok
  rotate 30
  compress
  delaycompress
  copytruncate
}

基本上将copytruncate内容复制到新文件并截断​​旧文件。这消除了重新启动的需要。

于 2011-04-12T03:44:16.963 回答
3

如果您正在谈论 Rails 应用程序日志轮换,您可以通过放置

 config.logger = Logger.new(config.log_path, 10, 1024**2)

在您的环境文件中。第二个参数是您要保留的 .log 文件的数量,第三个参数是文件在旋转之前允许达到的字节大小。此配置意味着 10 个 1 兆字节的文件。可能不像 logrotate 那样可配置(不支持压缩等),但它可以让您将所有日志文件保留在应用程序中。这通常对我有用。

如果想通过 nginx 坚持日志轮换,也发现了这一点。

于 2010-11-18T04:19:01.110 回答