在 Ruby on Rails 生产应用程序上启用日志轮换的最佳方法是什么?
是通过在托管服务器上使用 logrotate 还是在从应用程序初始化记录器时使用一组选项?
您可以配置 rails,以使用系统日志工具。
config/environments/production.rb 中的一个示例。
# Use a different logger for distributed setups config.logger = SyslogLogger.new
这样,您就可以登录到 syslog,并且可以使用默认的 logrotate 工具来轮换日志。
另一种选择是简单地配置 logrotate 以拾取 rails 留下的日志。例如,在 Ubuntu 和 Debian 上,它位于一个名为/etc/logrotate.d/rails_example_com.
/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 应用程序。
copytruncate
编辑:删除了“sharedscripts/endscript”,因为它们没有在这里使用,并根据评论引起问题。create 640 root adm并根据建议的评论删除。
create 640 root adm