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
(Note the class name was changed from Stage\xe2\x80\xa6 to State\xe2\x80\xa6 in v0.3.0)
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.
您可以更改STATE_LOG_LEVEL中的哈希值StateChangeLoggingObserver并更改用于不同状态的日志级别。我在初始化程序中使用它来防止ready和completed日志显示:
Rack::Timeout::StateChangeLoggingObserver::STATE_LOG_LEVEL[:ready] = :debug\nRack::Timeout::StateChangeLoggingObserver::STATE_LOG_LEVEL[:completed] = :debug\nRun Code Online (Sandbox Code Playgroud)\n
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 的建议)
阅读此处了解更多信息
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" }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3103 次 |
| 最近记录: |