Rails:记录异常的整个堆栈跟踪

2024-04-26

我一直在试图找出记录堆栈跟踪的正确方法。我碰到this https://stackoverflow.com/questions/228441/how-do-i-log-the-entire-trace-back-of-a-ruby-exception-using-the-default-rails-lo链接指出logger.error $!, $!.backtrace这是要走的路,但这对我不起作用日志错误做。根据文档,我不知道如何将第二个参数传递给错误方法,因为 Rails 使用的 ruby​​ 记录器仅接受单个参数。

奇怪的是(或者也许不是)第二个参数被接受而没有任何解释器的抱怨。然而,我传递给它的任何内容都会被忽略。

谁能解释我缺少什么?任何关于错误的第二个论点的见解以及它的作用是什么?


如果您查看 ActiveSupport 中 BufferedLogger 类的源代码,您将看到第二个参数是“progname”。仅当第一个参数为 nil 并且您没有给它任何块或块返回非真值时才使用此功能。

本质上,您不能使用第二个参数来输出其他内容。

你想做的事情更类似于:

begin
  raise
rescue => e
  logger.error e.message
  logger.error e.backtrace.join("\n")
end

根据您的日志记录设置方式,最好迭代回溯的每一行并单独打印它,因为某些记录器不输出换行符,在这种情况下,您需要执行以下操作:

begin
  raise
rescue => e
  logger.error e.message
  e.backtrace.each { |line| logger.error line }
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails:记录异常的整个堆栈跟踪 的相关文章

随机推荐