簡體   English   中英

Ruby on rails 日志文件太大

[英]Ruby on rails log file size too large

我偶然發現我的 rails3.1 日志文件非常大,大約 21mb。 就尺寸而言,這是正常的嗎? 生產環境中的日志文件是什么樣的? 此外,我可以擺脫日志嗎?謝謝

Rails 應用程序的log文件夾包含與每個標准環境對應的三個日志文件。 隨着時間的推移,日志文件會變得非常大。 提供了一個rake task以允許輕松清除日志文件。

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

你可以刪除文件!
如果不存在,Rails 將創建一個新日志。
如果文件很重要,顯然保存/備份文件,但通常不是。
如果您想將備份文件保存在同一個驅動器上但仍能節省空間,您還可以壓縮備份文件(然后刪除源文件)。

要自動輪換日志文件(最好的長期解決方案),請按此處所述使用日志輪換:

Ruby on Rails 生產日志輪換

然后你可以設置它並忘記它!

要實際更改記錄的內容,請參閱:

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

根據文檔,如果您想限制日志文件夾的大小,請將其放在您的“development.rb”文件中:

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

您可能想要使用logrotate 看看這個問題的答案: Ruby on Rails production log rotation

是的,您可以使用這樣的語法:

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

config.logger = ActiveSupport::Logger.new(nil)可以解決問題並完全禁用記錄到文件(保留控制台輸出)。

一個公平的妥協,在初始化程序中:

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

如果您不喜歡等待rake log:clear加載其環境並且只想即時清除一個日志,您可以執行以下操作:

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

(這允許日志在應用程序運行時保持在線,而rm log/mylog.log需要重新啟動應用程序。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM