我正在开发rails项目,我正在尝试将例外记录到rails日志文件中.我知道我可以调用logger.error $!
以获取记录到文件的异常的第一行.但是,我想要记录整个跟踪堆栈.如何使用默认rails logger记录异常的整个跟踪?
logger.error $!.backtrace
另外,别忘了你可以
rescue ErrorType => error_name
为您的错误提供除默认值之外的变量名称$!
.
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
在Rails的更高版本中,只需取消注释RAIL_ROOT/config/initializers/backtrace_silencers.rb中的以下行(如果不存在,则添加此文件本身):
# Rails.backtrace_cleaner.remove_silencers!
这样,您就可以在异常时将完整的回溯写入日志.这在v2.3.4中适用于我.
logger.error caller.join("\n")
应该做的伎俩.