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

Flo*_*nt2 6 ruby logging sinatra

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

# app.rb
require 'sinatra'

get '/' do
  logger.info "COUCOU"
  'Hello world!'
end
Run Code Online (Sandbox Code Playgroud)

然后启动服务器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
Run Code Online (Sandbox Code Playgroud)

我是否需要添加或配置某些内容才能在Sinatra中启用日志记录?阅读Sinatra README和文档,默认情况下启用日志记录Sinatra::Application.

Joã*_*ira 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
Run Code Online (Sandbox Code Playgroud)


Mic*_*ohl 3

您可能缺少一个logger = Logger.new.

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