Ruby on Rails中的日志轮换/清除

Bog*_*iev 9 logging ruby-on-rails

如何在rails上的ruby中的test.log和development.log上设置自动清理?

是否有设置在服务器启动和测试运行时自动删除开发和测试日志?

小智 19

红宝石记录器是手头上帮助你在这里-它旋转默认选项.

这是我做的:

environment.rb我们定义自己的记录器

new_logger = Logger.new(File.join(RAILS_ROOT, "log", "new_logger_#{RAILS_ENV}.log"), 'daily')
new_logger.formatter = Logger::Formatter.new
Run Code Online (Sandbox Code Playgroud)

这创建了我们自己的记录器...带有格式化程序(所以你得到时间戳等),每个环境一个,并每天轮换.

然后在初始化块中,我们要求Rails使用此记录器

Rails::Initializer.run do |config|

  config.active_record.logger = new_logger
  config.action_controller.logger = new_logger

  #snip
end
Run Code Online (Sandbox Code Playgroud)

显然,你可以看到这里有不同的记录器active_recordaction_controller- 有时非常有用!

  • 注意:在Rails 3中,您的"初始化块"正在开发中.rb,production.rb等. (4认同)

Sar*_*Mei 13

rake log:clear是一个rake任务,它截断与log/*.log零字节匹配的所有文件.您可以在服务器启动时调用它并运行测试任务.