Je travaille sur un projet de rails et j'essaie d'obtenir que les exceptions soient consignées dans les fichiers journaux de rails. Je sais que je peux appeler logger.error $!
pour obtenir la première ligne de l'exception consignée dans le fichier. Cependant, je souhaite également enregistrer la pile de trace complète. Comment enregistrer toute la trace d'une exception à l'aide de l'enregistreur de rails par défaut?
Réponses
Trop de publicités?
Matt Burke
Points
1993
La façon dont les rails le fait est
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
mxgrn
Points
1168
Dans les versions ultérieures de Rails, supprimez simplement le commentaire de la ligne suivante dans RAIL_ROOT / config / initializers / backtrace_silencers.rb (ou ajoutez ce fichier lui-même s'il n'est pas présent):
# Rails.backtrace_cleaner.remove_silencers!
De cette façon, la trace complète est écrite dans le journal avec une exception. Cela fonctionne pour moi dans la v2.3.4.
Redbeard
Points
708
Priit
Points
2196