每天轮换Ruby on Rails日志文件的最佳方法是什么?
我过去看过帖子。他们建议使用logrotate
并启用copytruncate
选项以避免重新启动Rails。
但是,在复制文件和截断文件之间的小时间段内,日志会丢失。
我的项目要求不会丢失日志,因此我们选择cronolog
使用ruby的stdlib Logger
。
代码如下:
config.logger = Logger.new(IO.popen("/usr/sbin/cronolog #{config.paths['log'].first}.%Y%m%d", "w"))
它大部分都能正常工作,但是当记录数据大小超过PIPE_BUF
因为使用PIPE时,日志会混合。
那么在这种情况下推荐使用什么方法来旋转日志呢?