在安装了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
(注意:类名是从Stage…
改变了v0.3.0到State…
)
在生产中我要记录在INFO
水平,所以我得到每个请求日志消息,但我不希望从机架超时这种噪声。
你可以改变在STATE_LOG_LEVEL
的StateChangeLoggingObserver
哈希和更改用于不同状态的日志级别。我用这个在我的初始化器,以防止ready
和completed
原木显示:
Rack::Timeout::StateChangeLoggingObserver::STATE_LOG_LEVEL[:ready] = :debug
Rack::Timeout::StateChangeLoggingObserver::STATE_LOG_LEVEL[:completed] = :debug
我对这个问题的解决方案是给rack-timeout
自己的记录。
一旦你做到了这一点,你可以改变它的日志级别:
# config/initializers/timeout.rb
Rack::Timeout::Logger.logger = Logger.new("log/timeout.log")
Rack::Timeout::Logger.logger.level = Logger::ERROR
读到这里了解更多信息
https://github.com/heroku/rack-timeout#rails-apps-manually或https://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" }