Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 机架超时:关闭信息/活动日志记录_Ruby On Rails 4_Heroku_Rack - Fatal编程技术网

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

Ruby on rails 4 机架超时:关闭信息/活动日志记录,ruby-on-rails-4,heroku,rack,Ruby On Rails 4,Heroku,Rack,安装了gem之后,如何能够只显示与错误相关的日志?例如,我希望避免日志中出现以下内容: source=机架超时id=8A11A8AC3DADB59A4 F347D8E365FADDF超时=20000ms服务=0ms状态=active source=机架超时id=8a11a8ac3dadb59a4f347d8e365faddf超时=20000ms服务=49ms状态=已完成 source=机架超时id=ee947d4a291d02821ab108c4c127f555超时=20000ms状态=就绪

安装了gem之后,如何能够只显示与错误相关的日志?例如,我希望避免日志中出现以下内容:


source=机架超时id=8A11A8AC3DADB59A4 F347D8E365FADDF超时=20000ms服务=0ms状态=active
source=机架超时id=8a11a8ac3dadb59a4f347d8e365faddf超时=20000ms服务=49ms状态=已完成
source=机架超时id=ee947d4a291d02821ab108c4c127f555超时=20000ms状态=就绪

以下情况不起作用:
Rack::超时。取消注册\u state\u change\u observer(:active)

以下内容可能是正确的,但我在测试时遇到了问题:


Rack::Timeout::Logger.level=Logger::ERROR
有关详细信息,请阅读此处

您也可以尝试此代码,尽管未经测试

Rack::Timeout::StageChangeLoggingObserver.logger = logger = ::Logger.new(STDERR)
logger.level = ::Logger::DEBUG
logger.formatter = ->(severity, timestamp, progname, msg) {"[#{timestamp}] #{msg} at=#{severity.downcase}\n" }
(注意,在v0.3.0中,类名从
Stage…
更改为
State…

在生产环境中,我希望在
INFO
级别进行日志记录,这样每个请求都会收到一条日志消息,但我不希望机架超时产生这种噪音

您可以在
statechangelogingobserver
中更改
STATE\u LOG\u级别
散列,并更改用于不同状态的日志级别。我在初始化器中使用它来防止
ready
completed
日志显示:

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

我对这个问题的解决方案是为
机架超时提供自己的记录器

完成此操作后,可以更改其日志级别:

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

config/initializers/rack_timeout.rb
I中添加:

Rack::Timeout::Logger.disable

这里描述了更详细的选项:

如果您要将应用程序部署到Heroku,则无法写入
log/
,因此请使用
Rack::Timeout::Logger.Logger=Logger.new(STDOUT)
(或者stderr,如果您愿意)。这就是我所做的
Rack::Timeout::Logger.disable If Rails.env.development?