我一直在试图找出记录堆栈跟踪的正确方法。我碰到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(使用前将#替换为@)