ruby on railsのtest.logとdevelopment.logで自動クリーンアップを設定する方法はありますか?Ruby on Railsのログのローテーション/クリア
サーバーの起動とテストの実行時に自動的にdevとテストログを削除する設定はありますか?
ruby on railsのtest.logとdevelopment.logで自動クリーンアップを設定する方法はありますか?Ruby on Railsのログのローテーション/クリア
サーバーの起動とテストの実行時に自動的にdevとテストログを削除する設定はありますか?
ruby loggerがここであなたを助けるために手の上にある - そしてそれは、デフォルトのオプションを持っています回転。ここで
は、私が何をすべきかです:
environment.rb
では、我々は環境ごとに1で、(あなたがタイムスタンプなどを得る)フォーマッタで...これは私たち自身のロガーを作成します
new_logger = Logger.new(File.join(RAILS_ROOT, "log", "new_logger_#{RAILS_ENV}.log"), 'daily')
new_logger.formatter = Logger::Formatter.new
当社独自のロガーを定義します、毎日回転します。時には非常に便利 -
は、次に初期化ブロックで我々はあなたが明らかにactive_record
ためとaction_controller
ごとに異なるロガーを持ってここにも力を見ることができます
Rails::Initializer.run do |config|
config.active_record.logger = new_logger
config.action_controller.logger = new_logger
#snip
end
このロガーを使用するようにレールを頼みます!
このチュートリアルのRotating Rails Log Filesを参照してください。問題が解決するかどうかはわかりません。ログファイルは気にしません。
私はあなたを手伝っています!
Unfortunetely logrotateはUnixライクなシステムでのみ利用可能です –
は、log/*.log
に一致するすべてのファイルをゼロバイトに切り捨てるレーキタスクです。 サーバーの起動時に呼び出すことができ、テストのタスクを実行できます。
すべてのスクリプト/サーバは、Rubyスクリプトで、あなたのような何かをするためにそれを修正する可能性が確認イム、次のとおりです。
#!/usr/bin/env ruby
require 'fileutils'
FileUtils.rm File.join(File.dirname(__FILE__), log, *.log)
require File.dirname(__FILE__) + '/../config/boot'
require 'commands/server'
実稼働環境では、本当にSyslogLogger(http://rails-analyzer.rubyforge.org/tools/files/lib/analyzer_tools/syslog_logger_rb.html)が必要です。syslogdに書き込むことができます。これはcreansupで、分散セットアップでファイルをローテーションします。
実験の後、標準のRuby File
クラスを使用してファイルを切り捨てることができる正しいポイントにRails初期化子がロードされていることがわかりました。
if MyRailsApp::Application.config.truncate_logs_on_server_start
# Making an assumption here that we're logging to a file...
File.open("log/#{ENV["RAILS_ENV"]}.log", "w") do |log_file|
log_file.puts("Initializer truncate_logs_on_server_start reset the log file")
log_file.puts
end
end
あなたはちょうどそのapplication.rbと様々な環境でMyRailsApp::Application.config.truncate_logs_on_server_start
を設定する必要があります。私は、設定/初期化子/ truncate_logs_on_server_start.rbでこれを持っています。
"クリーンアップ"とは具体的にはどういう意味ですか? – cakeforcerberus