我发现我的Rails 3.1日志文件非常大,约为21MB。在大小方面这正常吗?生产环境下的日志文件会是什么样子?另外,我能否摆脱这个日志?谢谢。
我发现我的Rails 3.1日志文件非常大,约为21MB。在大小方面这正常吗?生产环境下的日志文件会是什么样子?另外,我能否摆脱这个日志?谢谢。
你的Rails应用程序的log
文件夹包含与每个标准环境相对应的三个日志文件。随着时间的推移,日志文件可能会变得非常大。提供了一个rake任务
以便轻松清除日志文件。
rake log:clear
# Truncates all *.log files in log/ to zero bytes
# Specify which logs with LOGS=test,development,production
您可以直接删除该文件!
如果不存在日志文件,Rails会创建一个新的日志文件。
显然,如果该文件很重要,请保存/备份该文件,但通常情况下不需要备份。
如果您想在同一驱动器上保留备份文件但仍节省空间,您还可以压缩备份文件(然后删除源文件)。
要自动轮换日志文件(最佳长期解决方案),请使用如下所述的日志轮换:
Ruby on Rails production log rotation
然后您可以设置并忘记它!
要实际更改记录的内容,请参见:
http://dennisreimann.de/blog/silencing-the-rails-log-on-a-per-action-basis/
config.logger = ActiveSupport::Logger.new(config.paths['log'].first, 1, 50 * 1024 * 1024)
通过这个设置,你的日志文件永远不会超过50Mb。你可以根据自己的喜好更改大小。第二个参数中的“1”表示只保留1个历史日志文件,这样你就可以拥有最多100Mb的日志——当前日志和之前的50Mb内容。
我会在每次服务器启动时使用config/initializers/clear_development_log.rb
自动清除开发环境中的日志:
if Rails.env.development?
`rake log:clear`
end
log:clear
后添加 LOGS=development
,这样它只会清除 development.log
。 - Joshua Pinter是的,您可以使用这样的语法:
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_file
方法不存在,至少在 Rails 5+ 中不支持。 - Pere Joan Martorell在初始化器中达成公平妥协:
Rake::Task['log:clear'].invoke if Rails.env.development? || Rails.env.test?
config.logger = ActiveSupport::Logger.new(nil)
这个技巧可以完全禁用日志记录到文件中(控制台输出保留)。
rake log:clear
加载其环境,而只想在运行时清除一个日志文件,则可以执行以下操作:cat /dev/null > log/mylog.log # Or whatever your log's name is
这样可以让日志在线运行,而rm log/mylog.log
则需要重新启动应用程序。