在Sinatra的应用程序范围内运行时记录的“正确”方法是什么?

时间:2012-10-22 08:39:35

标签: ruby logging sinatra

我正在编写一个Sinatra应用程序。我想从配置块中记录一些东西。但是,它在应用程序范围内运行,如果我在配置块中enable :logging,则不包括记录器方法。是否有一些正常的方法来记录来自配置块的消息,同时遵守我生效的任何日志配置?

目前,我做了类似以下的事情:

class Blah < Sinatra::Base
  configure do
    enable :logging
    @@log = Logger.new("/dev/stderr")
    @@log.info "blah"
  end
end

我宁愿使用任何配置的记录器,默认为enable :logger行的一个设置。类似于以下的东西是理想的:

class Blah < Sinatra::Base
  configure do
    enable :logging
    logger.info "blah"
  end
end

1 个答案:

答案 0 :(得分:0)

从1.3开始(我认为)Sinatra附带了一个你所描述的记录器,但它默认写入STDOUT和STDERR,如果你想将它打到一个文件,请将它添加到你的config.ru:

logger = Logger.new('log/awesome_app.log')

use Rack::CommonLogger, logger
run AwesomeApp