【问题标题】:Log rotation in Rails DEVELOPMENT mode?Rails 开发模式下的日志轮换?
【发布时间】:2012-03-23 19:00:01
【问题描述】:

对于 Rails 3.1(很快将是 3.2),我有异常冗长的日志,其中包含大量额外的工作人员信息。

我通常会得到数千兆字节的development.log 文件。我已经看到一些关于轮换生产日志的各种讨论,但是我没有发现任何似乎适用于 development.log 轮换的内容。

您如何在每个100.megabytes 左右旋转您的development.log 或者我更喜欢实际截断文件的头部,以便只有最近的项目保留在日志,最多 100MB 的最新条目。

我已经玩了一点,我想更多的是,目前没有类似的东西存在,也许我应该实现一些将使用 ruby​​ File.truncate 的东西,但是我不确定效果这个还没有在文件的末尾。

【问题讨论】:

  • 在 Mac OS X 上运行 development。一些在 linux 上的组。如果我可以使用最好的非特定方法,或者我可以在必要时使用case CONFIG['host_os'] 做一些事情。
  • 我只是澄清了一点。我的真正目标是保留文件的尾部,或最近的日志条目,丢弃最旧的。
  • 您对上述可能的解决方案或临时解决方案有何看法?

标签: ruby-on-rails ruby ruby-on-rails-3 bash logging


【解决方案1】:

在 OSX 上我会使用 newsyslog

/etc/newsyslog.conf

在 Linux 操作系统上:logrotate

logrotate

【讨论】:

  • 对使用tail -c $[100*1024*1024] development.log有什么想法吗?
  • 好吧,不是真的,它相当庞大。我通常(用于调试/开发)清除我的控制台(cmd-k),然后运行我的代码以查看发生了什么。观看 100 MB 的跟踪,不,谢谢 :) 这也取决于其他人是否在您的开发环境上运行。从那时起,您需要拆分不同 IP 的混乱情况。
  • 哈哈哈,是啊,还是有点大。一旦我们没有对某些数据进行如此疯狂的消防软管喷吐,我可能会将其缩减到 10MB 左右。
【解决方案2】:

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

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

例子:

Logger.new(name, shift_age = 7, shift_size = 1048576)

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

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

这会保留每 1 MB 轮换一次的最后 10 个日志文件。

【讨论】:

  • 这很好用,但是在 3.2 中,Logger 类被弃用,取而代之的是 ActiveSupport::BufferedLogger,它显然不支持旋转。令人沮丧!
  • @CaffeineComa 你能支持你的推理吗?我正在使用 Rails 3.2.2,这工作得很好,至少在开发模式下,这是这个问题的范围。
猜你喜欢
  • 2011-06-22
  • 1970-01-01
  • 2011-06-20
  • 1970-01-01
  • 2010-11-12
  • 2020-08-30
  • 2012-06-15
  • 2020-07-15
  • 2017-03-08
相关资源
最近更新 更多