2010-12-06 55 views
3

Dans certaines situations, j'aimerais attraper une exception mais toujours afficher le Stack Trace dans le journal stackTrace défini via les propriétés Log4J dans grails. Comment puis je faire ça?Comment enregistrer stackTrace sans lâcher l'exception dans les grails

Je sais que je pourrais l'écrire dans le journal "normal" en utilisant log.error myException.stackTrace par exemple, mais je ne veux pas que la trace de la pile remplisse mon fichier journal normal.

+0

je ne sais pas Java (plus) ou Log4J (plus) ou Grails - mais je pense que vous pouvez faire ce qui est standard est tout langage de programmation. Vous pouvez lancer une exception et l'attraper. De cette façon, aucune exception ne fuira dans votre journal. A moins que vous ne vouliez pas lancer des exceptions dans des situations non exceptionnelles - ce que je suis entièrement d'accord - et vous demandez comment, en Java, récupérer le cadre de pile actuel. –

+0

J'attrape l'exception. Et je veux aussi que le Stack Trace apparaisse dans le journal, ce qui n'est pas le cas si je l'attrape. –

Répondre

3

Il existe déjà un journal stacktrace généré par des grails.

vous pouvez obtenir ce logger et ajoutez vos relevés de journaux dans le bloc de capture de l'exception

LogManager.getLogger("StackTrace") 

http://grails.org/doc/latest/guide/3.%20Configuration.html#3.1.2%20Logging

+0

Oui, mais la trace de la pile d'une exception interceptée n'apparaît pas ici! Comment est-ce que je peux attraper l'exception et ai toujours la trace de pile a enregistré dans le journal de pile de pile? –

+0

Désolé ... voir modifier –

+0

C'est tout - merci! Je peux enregistrer la Stacktrace complète en utilisant org.apache.log4j.LogManager.getLogger ("StackTrace"). Error myMessage, myException –