当前位置:  开发笔记 > 后端 > 正文

如何使用默认的Rails记录器记录Ruby异常的整个跟踪?

如何解决《如何使用默认的Rails记录器记录Ruby异常的整个跟踪?》经验,为你挑选了4个好方法。

我正在开发rails项目,我正在尝试将例外记录到rails日志文件中.我知道我可以调用logger.error $!以获取记录到文件的异常的第一行.但是,我想要记录整个跟踪堆栈.如何使用默认rails logger记录异常的整个跟踪?



1> Ian Terrell..:
logger.error $!.backtrace

另外,别忘了你可以

rescue ErrorType => error_name

为您的错误提供除默认值之外的变量名称$!.


这个不起作用,请使用`logger.error e.message +"\n"+ e.backtrace.join("\n")`.
我可以发誓4年前工作的多个参数,但也许没有.我已将其更新为仅记录回溯,这似乎是问题中最相关的方面; 我相信读者可以找出多个记录器调用是可能的,同上字符串连接(或更多Ruby-y,插值).

2> Matt Burke..:

rails的方式是

137             logger.fatal(
138               "\n\n#{exception.class} (#{exception.message}):\n    " +
139               clean_backtrace(exception).join("\n    ") +
140               "\n\n"
141             )

248       def clean_backtrace(exception)
249         if backtrace = exception.backtrace
250           if defined?(RAILS_ROOT)
251             backtrace.map { |line| line.sub RAILS_ROOT, '' }
252           else
253             backtrace
254           end
255         end
256       end



3> mxgrn..:

在Rails的更高版本中,只需取消注释RAIL_ROOT/config/initializers/backtrace_silencers.rb中的以下行(如果不存在,则添加此文件本身):

# Rails.backtrace_cleaner.remove_silencers!

这样,您就可以在异常时将完整的回溯写入日志.这在v2.3.4中适用于我.



4> Redbeard..:

logger.error caller.join("\n") 应该做的伎俩.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有