gpt4 book ai didi

ruby-on-rails - rails : Logging the entire stack trace of an exception

转载 作者:数据小太阳 更新时间:2023-10-29 06:18:01 27 4
gpt4 key购买 nike

我一直在尝试找出记录堆栈跟踪的正确方法。我遇到了this链接指出 logger.error $!, $!.backtrace 是要走的路,但这对我不起作用 log_error 。根据文档,我看不出将第二个参数传递给错误方法是如何工作的,因为 rails 使用的 ruby​​ 记录器只接受一个参数。

奇怪的是(或者可能不是)第二个论点被接受了,没有任何口译员的提示。但是,我传递给它的任何内容都将被忽略。

谁能解释一下我错过了什么?对错误的第二个论点是什么以及是什么吞噬了它有什么见解吗?

最佳答案

如果您查看 ActiveSupport 中 BufferedLogger 类的源代码,您会发现第二个参数是“progname”。这仅在第一个参数为 nil 并且您没有给它任何 block 或 block 返回非真值时使用。

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

你想要做的是更类似于:

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

关于ruby-on-rails - rails : Logging the entire stack trace of an exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3484337/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com