ruby - 在 Sinatra 的应用程序范围内运行时, "right"的记录方式是什么?

标签 ruby logging sinatra

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

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

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.3 开始(我认为)Sinatra 附带了您描述的记录器,但它默认写入 STDOUT 和 STDERR,如果您想将其写入文件,请将其添加到您的 config.ru:

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

use Rack::CommonLogger, logger
run AwesomeApp

关于ruby - 在 Sinatra 的应用程序范围内运行时, "right"的记录方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13007668/

相关文章:

ruby - 为什么我不希望 Ruby STDOUT 缓冲?

ruby-on-rails - ActionController::ParameterMissing(未找到参数:顺序)

ruby - 在 eventmachine 中使用 thin 和 rainbows 异步 sinatra。为什么越瘦越快?

sinatra - 在 Datamapper 中销毁依赖项

elasticsearch - 将日志从 kafka 传输到 elasticsearch

ruby - 强制续集将查询记录到与 sinatra 相同的目的地

ruby - 转换奇怪的字符 - Ruby

ruby-on-rails - NewRelic 认为我安装了 DelayedJob,但我没有

logging - 向 Google Cloud Build 日志输出添加时间戳

jsf - 所有级别的日志中每个用户/ session 都有唯一的 ID? Log4J?