在Sinatra应用程序中使用`logger.info`时出错“未定义的局部变量或方法`logger'”

时间:2011-04-04 21:58:18

标签: ruby logging sinatra

我有以下Sinatra 1.2.1应用程序代码:

# app.rb
require 'sinatra'

get '/' do
  logger.info "COUCOU"
  'Hello world!'
end

并使用ruby -rubygems app.rb启动服务器。当我转到http://localhost:4567时,我收到错误:

NameError at /
undefined local variable or method `logger' for #<Sinatra::Application:0x00000100d91f88>
file: app.rb location: block in <main> line: 4

我是否需要添加或配置某些内容以启用Sinatra中的日志记录?阅读Sinatra自述文件和文档,默认情况下,Sinatra::Application启用了日志记录。

3 个答案:

答案 0 :(得分:5)

问题在于找不到写入方法,只需以这种方式扩展Logger类,一切都应该没问题:

class Logger
  # Make Rack::CommonLogger accept a Logger instance
  # without raising undefined method `write' for #<Logger:0x007fc12db61778>
  # makes a method alias using symbols

  alias :write :<<
end

答案 1 :(得分:2)

您可能错过了logger = Logger.new

http://www.ruby-doc.org/stdlib/libdoc/logger/rdoc/

答案 2 :(得分:0)

记录器未定义,要克服它,您可以使用

Rails.logger.info "COUCOU" 

或者像这样定义:

logger = Rails.logger.new
logger.info "COUCOU"