如何在较旧的Sinatra API应用程序中进行日志和调试?

问题描述 投票:0回答:1

我有这个古老而简单的Sinatra API。它的版本是1.4.8。这很简单,而且会被重写。在短期内,我需要添加一些调试语句来修复它。我发现只需将它们发送到STDOUT即可在屏幕上实时观看它们。

我看到1.3版本中包含了一个记录器,但我似乎找不到一个如何实现它的好教程页面。我不需要复杂的日志记录类。我想做的最多就是登录文件。如果没有大量的时间投入,有没有一种简单的方法可以做到这两种方法?

logging sinatra
1个回答
1
投票

我发现this page非常好地概述了这个过程。

此代码块包含我的更改:

::Logger.class_eval { alias :write :'<<' }
access_log = ::File.join(::File.dirname(::File.expand_path(__FILE__)),'log','access.log')
$access_logger = ::Logger.new(access_log)
$error_logger = ::File.new(::File.join(::File.dirname(::File.expand_path(__FILE__)),'log','error.log'),"a+")
$error_logger.sync = true

configure :development do
  $access_logger.level = Logger::DEBUG
  use ::Rack::CommonLogger, $access_logger
end

configure :production do
  $access_logger.level = Logger::WARN
  use ::Rack::CommonLogger, $access_logger
end  

我刚刚更改了开发和生产的日志记录级别。我还将记录器变成了我可以从代码的其他部分访问的变量。

所以对于我的主API模块,我可以输出变量或其他任何内容:

$access_logger.debug "subscription_id is #{subscription_id}."

效果很好!

© www.soinside.com 2019 - 2024. All rights reserved.