Jos*_*ore 36 ruby logging ruby-on-rails
我正在开发rails项目,我正在尝试将例外记录到rails日志文件中.我知道我可以调用logger.error $!以获取记录到文件的异常的第一行.但是,我想要记录整个跟踪堆栈.如何使用默认rails logger记录异常的整个跟踪?
Ian*_*ell 38
logger.error $!.backtrace
Run Code Online (Sandbox Code Playgroud)
另外,别忘了你可以
rescue ErrorType => error_name
Run Code Online (Sandbox Code Playgroud)
为您的错误提供除默认值之外的变量名称$!.
Mat*_*rke 17
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
Run Code Online (Sandbox Code Playgroud)
mxg*_*grn 10
在Rails的更高版本中,只需取消注释RAIL_ROOT/config/initializers/backtrace_silencers.rb中的以下行(如果不存在,则添加此文件本身):
# Rails.backtrace_cleaner.remove_silencers!
Run Code Online (Sandbox Code Playgroud)
这样,您就可以在异常时将完整的回溯写入日志.这在v2.3.4中适用于我.
| 归档时间: |
|
| 查看次数: |
32214 次 |
| 最近记录: |