Rails: l'enregistrement de la totalité de la trace de la pile d'une exception
J'ai essayé de trouver la bonne manière d'enregistrer une trace de la pile. Je suis tombé sur cette lien qui stipule que enregistreur.erreur $!, $!.backtrace est le chemin à parcourir mais qui ne fonctionne pas pour moi log_error n'. Selon la documentation, je ne vois pas comment passer le deuxième argument de l'erreur de la méthode de travail de toute façon parce que le rubis enregistreur de rails utilise uniquement accepte un seul argument.
Étrangement (ou pas) le deuxième argument est accepté sans aucun interprète des plaintes. Cependant rien que je passe à il est ignoré.
Quelqu'un peut-il expliquer ce que je suis absent? Aucune idée de ce que le deuxième argument de l'erreur est et de quoi est-il manger?
Vous devez vous connecter pour publier un commentaire.
Si vous regardez le code source pour le BufferedLogger classe dans ActiveSupport, vous verrez que le second argument est 'nom_du_programme'. Il est utilisé uniquement lorsque le premier argument est nul et vous avez donné aucun bloc ou le bloc de retour d'une non-valeur véritable.
En essence, vous ne pouvez pas utiliser le deuxième paramètre de sortie d'autres choses.
Ce que vous voulez faire est quelque chose de plus semblable à:
Selon la configuration de votre journalisation de la configuration, il peut être préférable pour itérer sur chaque ligne de la trace et de l'imprimer séparément comme certains enregistreurs de ne pas émettre de nouvelles lignes, dans ce cas, vous feriez quelque chose comme:
$/
au lieu de cela, pour être compatible multi-plateforme? Laissez Ruby prendre soin d'elle, comme\r\n
n'est spécifique à un peu de plates-formes.C'est la réponse.
Rails.logger.error [e.message, *e.backtrace].join($/)