如何在较旧的Sinatra API应用程序中记录和调试?

时间:2019-03-31 20:03:58

标签: logging sinatra

我有这个简单的旧Sinatra API。它是版本1.4.8。这很简单,将要重写。在短期内,我需要向其中添加一些调试语句以修复某些问题。我发现只是将它们发送到STDOUT以便在屏幕上实时观看它们。

我看到1.3版中包含一个记录器,但是我似乎找不到如何实现它的良好教程页面。我不需要复杂的日志记录类。我最想做的就是登录到文件。是否有一种简单的方法可以在不花费大量时间的情况下完成上述任一操作?

1 个答案:

答案 0 :(得分: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}."

太棒了!