48

次のコードを使用して、RubyonRailsアプリケーションのロギングを構成しています。

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にありますが、機能していないようです。ここで何かが足りませんか?

Rails.logger.level = 4をenvironment.rbに入れると、機能しているように見えます。しかし、環境イニシャライザーで設定したいと思います。

4

2 に答える 2

97

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

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つの公式戦略を混同しているように見えますが、状況によっては機能します

于 2012-09-01T06:53:54.630 に答える
34

production.rbRails 4.0の場合、次のように(または目的の環境で)値を設定できます。

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

更新 ドキュメントには、次のように記載されています。

2.2ログレベル

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

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

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

これは、開発中またはステージング中のログを記録したいが、本番ログを不要な情報で溢れさせたくない場合に役立ちます。

デフォルトのRailsログレベルはinfo本番モードで、デバッグは開発モードとテストモードです。

于 2014-07-07T19:00:13.990 に答える