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

@Bjoernの答えは機能しますが、それFooはモデルではなくコントローラーになると思います。もう 1 つの方法は、Sinatra がロガーを設定する前にロガーを初期化し、ロガーに渡して使用することです。これを行う1つの方法は次のとおりです。

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

configure do
  set :logger, Foo.logger
end
于 2013-05-12T17:42:58.540 に答える
1

やりたいらしい

class Foo < Sinatra::Base

ロガーは、定義した Foo クラスのスコープでは使用できないためです。

于 2013-05-10T00:23:07.823 に答える