机架超时:关闭信息/主动记录

问题描述 投票:3回答:3

在安装了rack-timeout宝石怎么可能显示错误仅相关的日志?比如我想避免在我的日志下面:

source=rack-timeout id=8a11a8ac3dadb59a4f347d8e365faddf timeout=20000ms service=0ms state=active source=rack-timeout id=8a11a8ac3dadb59a4f347d8e365faddf timeout=20000ms service=49ms state=completed source=rack-timeout id=ee947d4a291d02821ab108c4c127f555 timeout=20000ms state=ready

以下没有工作:Rack::Timeout.unregister_state_change_observer(:active)

下面可能是在正确的道路上,但我无法测试:

Rack::Timeout::Logger.level = Logger::ERROR

ruby-on-rails-4 heroku rack
3个回答
2
投票

(注意:类名是从Stage…改变了v0.3.0到State…

在生产中我要记录在INFO水平,所以我得到每个请求日志消息,但我不希望从机架超时这种噪声。

你可以改变在STATE_LOG_LEVELStateChangeLoggingObserver哈希和更改用于不同状态的日志级别。我用这个在我的初始化器,以防止readycompleted原木显示:

Rack::Timeout::StateChangeLoggingObserver::STATE_LOG_LEVEL[:ready] = :debug
Rack::Timeout::StateChangeLoggingObserver::STATE_LOG_LEVEL[:completed] = :debug

2
投票

我对这个问题的解决方案是给rack-timeout自己的记录。

一旦你做到了这一点,你可以改变它的日志级别:

# config/initializers/timeout.rb
Rack::Timeout::Logger.logger = Logger.new("log/timeout.log")
Rack::Timeout::Logger.logger.level = Logger::ERROR

1
投票

读到这里了解更多信息

https://github.com/heroku/rack-timeout#rails-apps-manuallyhttps://github.com/heroku/rack-timeout/blob/master/doc/settings.md

你也可以试试这个代码,虽然未经测试。

Rack::Timeout::StageChangeLoggingObserver.logger = logger = ::Logger.new(STDERR)
logger.level = ::Logger::DEBUG
logger.formatter = ->(severity, timestamp, progname, msg) {"[#{timestamp}] #{msg} at=#{severity.downcase}\n" }
© www.soinside.com 2019 - 2024. All rights reserved.