Ruby on rails日志文件太大

时间:2011-10-16 11:51:40

标签: ruby-on-rails ruby-on-rails-3.1 filesize logging

我偶然发现我的rails3.1日志文件非常大,大约21mb。 就尺寸而言,这是正常的吗?日志文件在生产环境中的含义是什么? 此外,我可以摆脱日志吗?谢谢

9 个答案:

答案 0 :(得分:69)

Rails应用程序的log文件夹包含与每个标准环境相对应的三个日志文件。日志文件随着时间的推移会变得非常大。提供rake task以便轻松清除日志文件。

rake log:clear
# Truncates all *.log files in log/ to zero bytes 
# Specify which logs with LOGS=test,development,production

答案 1 :(得分:23)

你可以删除文件!
如果不存在,Rails将创建一个新日志 显然保存/备份文件,如果它很重要,但通常不是。
如果要将文件保存在同一个驱动器上但仍可节省空间,也可以压缩备份文件(然后删除源文件)。

要自动旋转日志文件(最佳长期解决方案),请按照此处所述使用日志旋转:

Ruby on Rails production log rotation

然后你可以设置并忘记它!

要实际更改记录内容,请参阅:

http://dennisreimann.de/blog/silencing-the-rails-log-on-a-per-action-basis/

答案 2 :(得分:8)

According to the documentation,如果你想限制日志文件夹的大小,请把它放在'development.rb'文件中:

config.logger = ActiveSupport::Logger.new(config.paths['log'].first, 1, 50 * 1024 * 1024)

这样,您的日志文件永远不会超过50Mb。您可以根据自己的喜好更改大小。第二个参数中的“1”表示将保留1个历史日志文件,因此您将拥有最多100Mb的日志 - 当前日志和前一个50Mb的块。

答案 3 :(得分:5)

您可能想要使用logrotate。看看这个问题的答案:Ruby on Rails production log rotation

答案 4 :(得分:4)

我自动清除每个服务器上的开发日志,以config/initializers/clear_development_log.rb开头:

if Rails.env.development?
  `rake log:clear`
end

答案 5 :(得分:1)

是的,你可以使用这样的语法:

config.logger = ActiveSupport::Logger.new(config.log_file, num_of_file_to_keep, num_of_MB*1024*1024)

示例:

config.logger = ActiveSupport::Logger.new(config.log_file, 2, 20*1024*1024)

它不仅可以用于Rails日志,还可以使用rails运行的任何服务的日志文件,例如:rpush log,...

答案 6 :(得分:0)

config.logger = ActiveSupport::Logger.new(nil)完成了这一操作,并完全禁用了对文件的记录(保留了控制台输出)。

答案 7 :(得分:0)

在初始化程序中公平妥协:

Rake::Task['log:clear'].invoke if Rails.env.development? || Rails.env.test?

答案 8 :(得分:0)

如果您不希望等待rake log:clear加载其环境,而只想即时清除一个日志,则可以执行以下操作:

cat /dev/null > log/mylog.log # Or whatever your log's name is

(这允许日志在应用程序运行时保持联机状态,而rm log/mylog.log则需要重新启动应用程序。)