web-dev-qa-db-ja.com

Ruby on Rails log file size too large

Rails3.1のログファイルが約21MBと非常に大きいことがわかりました。これは、通常のサイズの点でですか?本番環境でログファイルはどのようになりますか?その上、ログを取り除くことはできますか?

28
Jason

ファイルを削除するだけです!
Railsは、ログが存在しない場合、新しいログを作成します。
明らかに重要な場合はファイルを保存/バックアップしますが、通常は重要ではありません。
同じドライブに保持したいが、スペースを節約したい場合は、バックアップしたファイルをZipしてからソースを削除することもできます。

ログファイルを自動的にローテーションするには(最良の長期的なソリューション)、ここで説明するようにログローテーションを使用します。

Ruby on Rails本番ログのローテーション

その後、設定して忘れることができます!

ログに記録される内容を実際に変更するには、以下を参照してください。

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

25
Michael Durrant

Railsアプリケーションのlogフォルダには、各標準環境に対応する3つのログファイルが保持されます。ログファイルは、時間の経過とともに非常に大きくなる可能性があります。Arake taskは、ログファイルを簡単に消去できるようにするために提供されています。

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

ドキュメントによると 、ログフォルダーのサイズを制限する場合は、これを 'development.rb'ファイルに追加します。

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

これにより、ログファイルが50Mbを超えることはありません。サイズはお好みで変更できます。 2番目のパラメータの「1」は、1つの履歴ログファイルが保持されることを意味します。つまり、最大100Mbのログ、つまり現在のログと以前の50Mbのログが存在します。

8
Fellow Stranger

logrotateを使用することもできます。この質問への答えを見てください: Ruby on Rails本番ログのローテーション

5
htanata

config/initializers/clear_development_log.rbで始まる各サーバーで開発中のログを自動的にクリアします。

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

はい、次のような構文を使用できます。

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 logを使用するだけでなく、次のようなRailsで実行されるサービスのログファイルを使用できます:rpush log、...

1
ThienSuBS

初期化子での公平な妥協:

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

config.logger = ActiveSupport::Logger.new(nil)はトリックを実行し、ファイルへのロギングを完全に無効にします(コンソール出力は保持されます)。

0
Artur Beljajev