小编典典

Ruby on Rails 生产日志轮换

all

在 Ruby on Rails 生产应用程序上启用日志轮换的最佳方法是什么?

是通过在托管服务器上使用 logrotate 还是在从应用程序初始化记录器时使用一组选项?


阅读 52

收藏
2022-08-03

共1个答案

小编典典

选项 1:syslog + logrotate

您可以配置 rails,以使用系统日志工具。

config/environments/production.rb 中的一个示例。

# Use a different logger for distributed setups
config.logger = SyslogLogger.new

这样,您就可以登录到 syslog,并且可以使用默认的 logrotate 工具来轮换日志。

选项 2:普通 Rails 日志 + logrotate

另一种选择是简单地配置 logrotate 以拾取 rails 留下的日志。例如,在 Ubuntu 和 Debian
上,它位于一个名为/etc/logrotate.d/rails_example_com.

/path/to/rails.example.com/tmp/log/*.log {
    weekly
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    copytruncate
}

根据以下建议,建议在 Rails 中使用copytruncate,以避免重新启动 Rails 应用程序。

编辑:删除了“sharedscripts/endscript”,因为它们没有在这里使用,并根据评论引起问题。create 640 root adm并根据建议的评论删除。

2022-08-03