【问题标题】:Simple and Ideal Logging in SinatraSinatra 中简单而理想的日志记录
【发布时间】:2012-03-27 12:50:48
【问题描述】:

我浏览了一些博客和网站,它们为我提供了一些有关如何登录 sinatra 的信息,但不适用于我的应用程序,而且我浏览了一个名为 sinatra-logger 的 gem,没有尝试过,想知道理想且简单的方法sinatra 中的“日志”。就像我们为 rails 做 logger.info 一样。

我尝试过但不起作用的代码来自以下站点link,而且一些 SO 链接也指向上面链接中使用的相同方法。

configure do
 LOGGER = Logger.new("sinatra.log")
end

helpers do
 def logger
  LOGGER
 end
end

我在我的应用程序的 app.rb 中写了这个,它失败了为 App:Module 说未定义的方法 `configure'

任何指针或指南都会有所帮助。谢谢。

修改 现在正在使用文件写入来记录我的错误和消息:

File.open('log.txt', 'a') do |f|
 f.write "#{status}-#{CONFIG.api_url}-#{data.inspect}-tweet}"
end

【问题讨论】:

标签: logging sinatra rack


【解决方案1】:

如果您使用的是 Sinatra 1.3,您应该能够像使用 logger.info 在 Rails 中一样登录

以下内容抄自Sinatra Readme


记录

在请求范围内,logger helper 暴露了一个 Logger 实例:

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

此记录器会自动考虑您的机架处理程序的记录设置。如果禁用日志记录,此方法将返回一个虚拟对象,因此您不必担心路由和过滤器。

请注意,默认情况下仅对 Sinatra::Application 启用日志记录,因此如果您从 Sinatra::Base 继承,您可能需要自己启用它:

 class MyApp < Sinatra::Base
   configure :production, :development do
     enable :logging
   end
 end

为避免设置任何日志记录中间件,请将日志记录设置设为 nil。但是,请记住,在这种情况下 logger 将返回 nil。一个常见的用例是您想要设置自己的记录器。 Sinatra 将使用它在 env['rack.logger'] 中找到的任何内容。


Rack::CommonLogger 在内部生成日志消息(我认为)。

【讨论】:

    【解决方案2】:

    在这里查看我的建议:Logging in Sinatra?

    但是,从您的问题看来,问题在于 App 是一个模块。

    你的 Sinatra 主类应该是这样的:

    class App < Sinatra::Base
    

    相对于

    module App < Sinatra::Base
    

    确保您已将其定义为一个类,并且该错误应该消失。

    【讨论】:

      猜你喜欢
      • 2016-04-22
      • 2011-12-29
      • 2018-06-13
      • 2011-01-29
      • 2016-08-11
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      相关资源
      最近更新 更多