在请求中,Sinatra记录器工作正常:
get '/' do
logger.info "loading data"
...
但是,从模型中,它不起作用。该模型无权访问记录器:
class Foo
def self.do_something
logger.info "loading data"
end
end
get '/' do
Foo.do_something
...
如何从模型中访问记录器?
答案 0 :(得分:1)
好像你想做
class Foo < Sinatra::Base
因为在您定义的Foo类范围内,logger不可用。
答案 1 :(得分:1)
@ Bjoern的答案会奏效,但我认为这会使Foo
成为控制者,而不是模特。另一种方法是在Sinatra为你设置一个记录器之前初始化一个记录器,然后将它传递给它使用。这样做的一种方法可能是:
class Foo
def self.logger
@logger ||= Logger.new STDOUT
end
end
configure do
set :logger, Foo.logger
end