自定义rails未捕获的异常日志记录

jro*_*ind 2 logging ruby-on-rails

因此,如果我的Rails应用程序中存在未捕获的异常,则会使用堆栈跟踪进行记录.

大.但我实际上想关闭"INFO"级别日志记录,并且只记录WARN/ERROR/FATAL.

这意味着,对于未被捕获的重复,我真的希望它能够更多地记录当前请求,而不仅仅是异常名称和堆栈跟踪.我想要请求参数,请求URI,我甚至想要请求客户端IP和用户代理.

我无法找到Rails的哪个部分进行自定义以获得此功能.无论是单独使用配置还是通过覆盖方法,甚至通过猴子修补 - 我都无法确定实际发生的位置.

是因为它在中间件中关闭了吗?呸! 无论哪种方式...任何关于实际执行此操作的最简单方法的提示?

(令人惊讶的是Rails不会让这很容易,不是吗?似乎并不是那么不寻常的事情?是不是因为每个人都在使用某些第三方平台来捕获这些东西而不是日志文件?我不是,嘿嘿.)

mat*_*rly 6

您可以通过使用rescue_from捕获所有异常来添加其他异常处理.

例如,您可以将其添加到application_controller.rb:

rescue_from Exception, :with => :internal_error

def internal_error(e)
   logger.error request.fullpath
   raise e
end
Run Code Online (Sandbox Code Playgroud)

通过重新提升原始异常,您可以确保rails也能看到它.