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