机架超时:关闭信息/活动日志记录

Mar*_*lar 5 rack heroku ruby-on-rails-4

安装了机架超时gem 后,如何仅显示 ERROR 相关日志?例如,我想避免在我的日志中包含以下内容:

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

Luc*_*son 6

(Note the class name was changed from Stage\xe2\x80\xa6 to State\xe2\x80\xa6 in v0.3.0)

\n\n

In production I want to log at INFO level so I get a log message per request, but I don't want this noise from rack-timeout.

\n\n

您可以更改STATE_LOG_LEVEL中的哈希值StateChangeLoggingObserver并更改用于不同状态的日志级别。我在初始化程序中使用它来防止readycompleted日志显示:

\n\n
Rack::Timeout::StateChangeLoggingObserver::STATE_LOG_LEVEL[:ready] = :debug\nRack::Timeout::StateChangeLoggingObserver::STATE_LOG_LEVEL[:completed] = :debug\n
Run Code Online (Sandbox Code Playgroud)\n


Hul*_*ell 5

config/initializers/rack_timeout.rb我在其中添加了:

Rack::Timeout::Logger.disable if Rails.env.development?
Run Code Online (Sandbox Code Playgroud)

这里描述了更详细的选项:https://github.com/sharpstone/rack-timeout/blob/master/doc/logging.md

(感谢@Sandip Subedi 的建议)

  • 这就是我所做的`Rack::Timeout::Logger.disable if Rails.env.development?` (2认同)

DJS*_*pat 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" }
Run Code Online (Sandbox Code Playgroud)