如何防止日志记录Rails堆栈跟踪

时间:2016-03-08 22:31:14

标签: ruby-on-rails logging

我试图减少日志中的噪音量,并希望禁用Rails在错误期间记录堆栈跟踪。

由于我使用的是错误报告服务(Honeybadger.io),因此我不需要在日志中查看堆栈跟踪,因为它已在错误处理服务的异常报告中提供。< / p>

3 个答案:

答案 0 :(得分:1)

根据文档,您应该能够添加一个回溯消音器,通过在块中返回true来排除每一行。

但是,至少在Rails 4.2.5.2中,这似乎并不起作用,即使它确实有效,你仍然会在日志中找到关于异常的一行。

无意中我发现,如果你在消音器块中引发错误,这将会抑制错误消息和整个回溯,这正是我正在寻找的。

Rails.backtrace_cleaner.add_silencer { |_line| raise }

将此hack与concise_logging gem相结合我现在可以拥有如下所示的日志:

enter image description here

答案 1 :(得分:1)

logs the errors是默认的Rails中间件tuple(map(tuple, lista))

您可以在DebugExceptionsconfig.middleware.delete(ActionDispatch::DebugExceptions)中用config/environment.rb删除它

答案 2 :(得分:0)

嗯,ReaderT $ \r -> runReaderT (f r) r 有效,但我称其行为可以预测

https://github.com/vipulnsward/rails/blob/ecc8f283cfc1b002b5141c527a827e74b770f2f0/actionpack/lib/action_dispatch/middleware/debug_exceptions.rb#L155-L156

由于Rails.backtrace_cleaner.add_silencer为空(这是因为错误不是来自用户代码而是路由错误),我们会回退到application_trace,它不会过滤它(它只过滤噪音)。< / p>

您可以通过创建自己的log_formatter来解决它。在framework_trace和/或development.rb添加

test.rb

在模型中创建只需要方法config.log_formatter = SilentLogger.new config.log_formatter.add_silencer { |line| line =~ /lib/ } 的简单类。在那里,您可以根据需要修改回溯。

call