Rails:loggingexception的整个堆栈跟踪

我一直在试图找出正确的方式来logging堆栈跟踪。 我碰到这个链接,其中指出logger.error $ !, $ !. backtrace是要走的路,但是这对我log_error不起作用。 根据文档,我不知道如何传递第二个参数的错误方法无论如何将工作,因为轨道使用的Rubylogging器只接受一个参数。

奇怪的是(也许不是)第二个理由被接受,没有任何解释者的抱怨。 但是,我传递给它的任何东西都会被忽略。

任何人都可以解释我失踪? 任何洞察到错误的第二个论据是什么和吃什么?

如果您在ActiveSupport中查看BufferedLogger类的源代码,则会看到第二个参数是“progname”。 这只在第一个参数为nil时使用,并且您已经给出了它没有块或块返回一个非真值。

实质上,你不能使用第二个参数来输出额外的东西。

你想要做的更类似于:

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

根据您的日志logging设置,最好遍历回溯的每一行,并单独打印,因为某些logging器不会输出换行符,在这种情况下,您可以执行如下操作:

 begin raise rescue => e logger.error e.message e.backtrace.each { |line| logger.error line } end