48

我正在使用以下代码在我的 Ruby on Rails 应用程序中配置日志记录:

环境.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

注意:最后一种方法似乎将两种官方策略混为一谈,但在某些情况下有效

于 2012-09-01T06:53:54.630 回答
34

对于 Rails 4.0,您可以在production.rb(或您想要的环境)中设置值,如下所示:

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

更新 文档说明它是这样的:

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生产模式,调试模式是开发和测试模式。

于 2014-07-07T19:00:13.990 回答