web-dev-qa-db-ja.com

ロギングレベルをRuby on Rails

次のコードを使用して、Ruby on Rails application:

environment.rb:

Rails.logger = Logger.new(STDOUT)

class Logger
  def format_message(severity, timestamp, progname, msg)
    "#{timestamp.to_formatted_s(:db)} #{severity} #{msg}\n"
  end
end

私は今を使用して警告するようにログレベルを設定しようとしています

config.log_level = :warn

私のproduction.rbにありますが、うまくいかないようです。ここに何かが足りませんか?

Environment.rbにRails.logger.level = 4を入れると、動作するようです。しかし、私は私の環境イニシャライザーで物事を構成したいと思います。

35
Lieven Cardoen

公式ドキュメント によると、以下を使用する必要があります。

config.log_level = :warn # In any environment initializer, or
Rails.logger.level = 0 # at any time

どちらもうまくいかない場合は、以下を試してください。

config.log_level = Logger::WARN

それがうまくいかない場合は、試してください:

config.logger.level = Logger::WARN

注:最終的な方法は、2つの公式戦略を統合しているように見える、しかしいくつかの状況で動作します

73
Brad Werth

Rails 4.0の場合、production.rb(またはご希望の環境)のように:

# Set to :debug to see everything in the log.
config.log_level = :warn

Updateドキュメント 次のように述べます:

2.2ログレベル

メッセージのログレベルが設定されたログレベル以上の場合、何かがログに記録されたときに、対応するログに出力されます。現在のログレベルを知りたい場合は、Rails.logger.level 方法。

使用可能なログレベルは次のとおりです。:debug:info:warn:error:fatal、および:unknown、それぞれ0から5までのログレベル番号に対応します。デフォルトのログレベルを変更するには、使用します

config.log_level = :warn # In any environment initializer, or
Rails.logger.level = 0 # at any time

これは、開発中またはステージング中にログを記録したいが、不必要な情報で運用ログをあふれさせたくない場合に便利です。

デフォルトのRailsログレベルは、プロダクションモードではinfo、開発およびテストモードではデバッグです。

26
Besi