2

我想在日志中放一些东西,但我不断收到

NameError: undefined local variable or method 'logger' for Report:Class

我试过了

logger "hi"
logger 'hi'
logger.info 'hi'
Rails.logger "hi"

但我只是收到上述错误。

我尝试添加config.logger = Logger.new(STDOUT)到我的config/environments/development.rb但没有帮助,仍然得到错误。

我在script/console...中运行该方法,但每次我退出并输入它以重新加载所有内容。

4

3 回答 3

3

你必须使用:

Rails.logger.info 'hi'

Rails.logger返回一个记录器实例,并通过使用消息对其调用infowarnerrordebug,此消息以指定的日志级别记录。

ActiveRecordActionController实例中,您还可以使用返回的记录器便利访问器Rails.logger

于 2012-08-16T15:06:15.133 回答
2

除非您logger在正在执行的范围内调用了可用的变量或方法,否则它不会神奇地存在。config上下文是短期的,仅在初始化期间。

Rails.logger是您通常可以访问它的全局变量。

于 2012-08-16T13:59:11.923 回答
0

您可以在至少 version 中在 Rails 模型之外使用 Rails 记录器2.3.X。您可能习惯于在模型或控制器中执行以下操作:

logger.info "Some debugging info I want to see in my development log."

但是,如果您创建一个不继承自 的常规模型ActiveRecord,您可能会看到以下错误:

# 未定义的局部变量或方法“记录器”

解决方案是调用 Rails.logger.info(或调试,或警告),如下所示:

Rails.logger.info "Some debugging info I want to see in my development log."
于 2017-09-21T07:54:04.320 回答