0

在请求中,Sinatra 记录器工作正常:

get '/' do
  logger.info "loading data"
  ...

但是,在模型中,它不起作用。该模型无权访问记录器:

class Foo
  def self.do_something
    logger.info "loading data"
  end
end

get '/' do
  Foo.do_something
  ...

如何从模型中访问记录器?

4

2 回答 2

1

看来你想做

class Foo < Sinatra::Base

因为 logger 在您定义的 Foo 类的范围内不可用。

于 2013-05-10T00:23:07.823 回答
1

@Bjoern 的答案会起作用,但我想这会成为Foo一个控制器而不是一个模型。另一种方法是在 Sinatra 为您设置一个记录器之前初始化一个记录器,然后将其传递给它以供使用。这样做的一种方法可能是:

class Foo
  def self.logger
    @logger ||= Logger.new STDOUT
  end
end

configure do
  set :logger, Foo.logger
end
于 2013-05-12T17:42:58.540 回答