Ruby on Rails 日志文件太大

问题描述 投票:0回答:10

我偶然发现我的rails3.1日志文件超级大,大约21mb。 就尺寸而言,这样正常吗?生产环境中的日志文件是什么样的? 另外,我可以去掉日志吗?谢谢

ruby-on-rails ruby-on-rails-3.1 filesize logging
10个回答
81
投票

Rails 应用程序的

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

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

29
投票

您只需删除该文件即可!
如果日志不存在,Rails 将创建一个新日志。
显然,如果文件很重要,请保存/备份该文件,但通常情况下并不重要。
如果您想将备份文件保留在同一驱动器上但仍节省空间,您还可以压缩备份文件(然后删除源文件)。

要自动轮换日志文件(最佳长期解决方案),请使用日志轮换,如下所述:

Ruby on Rails 生产日志轮换

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

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

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


13
投票

根据文档,如果您想限制日志文件夹的大小,请将其放入您的“development.rb”文件中:

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

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


6
投票

我自动清除每台服务器上的开发日志,以

config/initializers/clear_development_log.rb
开始:

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

5
投票

您可能想使用

logrotate
。看看这个问题的答案:Ruby on Rails 生产日志轮转


3
投票

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

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日志,...


0
投票

config.logger = ActiveSupport::Logger.new(nil)
做到了这一点并完全禁用记录到文件(保留控制台输出)。


0
投票

初始化器中的公平妥协:

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

0
投票

如果您不喜欢等待

rake log:clear
加载其环境,而只想即时清除一个日志,您可以执行以下操作:

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

(这允许日志在应用程序运行时保持在线状态,而

rm log/mylog.log
需要重新启动应用程序。)


0
投票

现在可以在最新版本的 Rails 中配置

log_file_size
。这些信息可能对您有用。

参考:https://guides.rubyonrails.org/configuring.html#config-log-file-size

© www.soinside.com 2019 - 2024. All rights reserved.