在Rails开发模式下记录日志?

yll*_*ate 8 ruby bash logging ruby-on-rails ruby-on-rails-3

对于Rails 3.1(很快就会是3.2),我有非常详细的日志,其中有大量额外的工作人员信息涌入其中.

我经常以多GB development.log文件结束.我已经看到有关旋转生产日志的各种各样的讨论,但是我没有发现任何看起来适用于development.log旋转的东西.

你怎么旋转你development.log的每一个100.megabytes左右? 或者我想要的是实际截断文件的头部,以便只有最新的项目保留在日志中,最多100MB的最新条目.

我已经玩过这个了,并且我正在考虑的事情比目前存在的更多,而且也许我应该实现一些会File.truncate以某种方式使用红宝石的东西,但是我不确定它在尾部的效果到目前为止的文件结尾.

Tom*_*kas 10

您实际上可以告诉Ruby Logger类在构造函数中旋转文件:

http://corelib.rubyonrails.org/classes/Logger.html#M000163

例:

Logger.new(name, shift_age = 7, shift_size = 1048576)
Run Code Online (Sandbox Code Playgroud)

在我的一个enrivornment文件中,我有以下行:

config.logger = Logger.new("#{RAILS_ROOT}/log/#{ENV['RAILS_ENV']}.log", 10, 1048576)
Run Code Online (Sandbox Code Playgroud)

这将保留最后10个每1 MB旋转的日志文件.

  • 这很好用,但在3.2中,不推荐使用Logger类,而是使用ActiveSupport :: BufferedLogger,它显然不支持旋转.令人沮丧! (2认同)