【问题标题】:How to change the log level in Sinatra如何在 Sinatra 中更改日志级别
【发布时间】:2017-01-27 05:26:00
【问题描述】:

我正在使用此代码在我的 Sinatra 应用程序中启用日志记录:

log_file = File.new('my_log_file.log', "a") 
$stdout.reopen(log_file)
$stderr.reopen(log_file)    
$stdout.sync=true
$stderr.sync=true

实际的日志记录是使用:

logger.debug("Starting call. Params = #{params.inspect}")

事实证明,只有 INFO 或更高级别的日志消息会被记录,而 DEBUG 消息不会被记录。我正在寻找一种将日志级别设置为调试的方法。

【问题讨论】:

    标签: ruby sinatra


    【解决方案1】:

    您可以使用

    设置日志级别
    configure :development do
      set :logging, Logger::DEBUG
    end
    

    Sinatra 在其默认中间件中设置了 Rack::Logger,可以使用日志级别进行初始化(请参阅http://rack.rubyforge.org/doc/Rack/Logger.html)。 Sinatra 使用您的 logging 设置对其进行初始化,因此您可以在其中放置一个数字(或 Logger 常量),而不仅仅是 true

    仅供参考,这里是来自Sinatra::Base 源代码的相关方法,用于初始化 Rack::Logger 中间件 (found here)

    def setup_custom_logger(builder)
      if logging.respond_to? :to_int
        builder.use Rack::Logger, logging
      else
        builder.use Rack::Logger
      end
    end
    

    这是在Sinatra 1.3.2上的,不知道在早期版本有没有不同

    【讨论】:

      【解决方案2】:

      我想可能有更好的方法,但您始终可以在before 过滤器中设置日志级别:

      before do
        logger.level = 0
      end
      

      【讨论】:

      • 我也是这么想的,但我希望有比这更好的方法。
      • 如果你使用 rackup,我想你可以在 .ru 文件中更改你的记录器,因为 Sinatra 的记录器实际上是来自 Rack 的。
      • 我找不到更好的解决方案,因此接受了这个答案。
      • 我正在寻找一种在配置块中设置它的方法
      • @DaveSag:另一个答案呢,你的情况看起来很有希望?
      【解决方案3】:

      在我的情况下,我可以让日志记录可靠地工作的唯一方法如下:(简化示例)

      首先我将记录器和日志文件夹设置如下:

      require 'logger'
      
      configure do
        log_dir = "#{root}/log"
        Dir.mkdir(log_dir) unless Dir.exists?(log_dir)
        file = File.new("#{log_dir}/#{environment}.log", 'a+')
        file.sync = true
        use Rack::CommonLogger, file
      end
      

      然后在单独的环境配置中

      configure :test do
        set :logging, Logger::ERROR
      end
      
      configure :development do
        set :logging, Logger::DEBUG
      end
      
      configure :production do
        set :logging, Logger::INFO
      end
      

      这是一种享受。

      【讨论】:

        猜你喜欢
        • 2016-09-15
        • 1970-01-01
        • 1970-01-01
        • 2011-09-01
        • 2013-06-03
        • 2020-05-07
        • 1970-01-01
        • 2014-08-21
        • 1970-01-01
        相关资源
        最近更新 更多