12
votes

Loging InnerException à l'aide de log4net

Comment vous connecter l'exception intérieure avec log4net?

Ceci est mon motif de conversion actuel: P>

<conversionPattern value="%date [%appdomain] %-5level %logger [%property{NDC}] - %message%newline" />


1 commentaires

Juste une note: journalisation.apache.org/log4net/release/sdk/ log4net.ndc.html NDC est obsolète. J'ai utilisé avec succès log4net.threadcontext.properties ["PropertyName"] à la place. Votre modèle de conversion serait quelque chose comme % propriété {propertyName} référence: Logging.apache.org/log4net/Release/sdk/log4net.ndc .html


3 Réponses :


12
votes

Console et les appendeurs de fichiers impriment automatiquement l'exception. L'exception: message, trace de pile et toutes les exceptions internes (à nouveau avec la trace de pile) sont enregistrées sur des lignes distinctes et ne suivent pas le motif de conversion.

Je ne suis même pas sûr si vous pouviez configurer log4net pour ne pas l'imprimer.

mise à jour: Il est possible de configurer l'appendeur pour ne pas imprimer la standingTrace: Log4net - Déconnexion de l'exception StackTrace uniquement Pour certains fichiers


4 commentaires

Salut Stefan, pouvez-vous me signaler à une entrée pertinente dans le SDK confirmant ce que vous avez répondu?


Je n'ai pas lu ceci nulle part. C'est ce que je vois dans mes fichiers journaux ou sur la console lorsque j'utilise log4net. Les exceptions internes sont toujours imprimées.


Je ne sais pas pourquoi, mais je vois dans mon fichier journal juste en face de la chose - l'exception intérieure n'est pas du tout connecté.


Êtes-vous vraiment sûr d'avoir une exception intérieure? Je ne saurais pas pourquoi log4net ne devrait pas le connecter ...



10
votes

% exception

une forme formatée de l'objet d'exception dans l'entrée de journal, si l'entrée contient une exception; Sinon, cette expression de format n'ajoute rien à l'entrée du journal

Référence: http: // www. boeufycode.com/post/log4net-Tutorial-4-layouts-et-patterns.aspx

Je crois que votre exception contiendrait l'exception interne:

Modifier: Utilisez la méthode ILog.Error () au lieu d'ILOG.ErrorFormat (). Selon Documentation , errorFormat () ne prend pas un Objet d'exception à inclure dans l'événement journal


1 commentaires

+1 Pour mentionner que la format d'erreur ne prend pas une exception. C'est ce dont j'avais besoin.



-1
votes

Il suffit de vérifier cela dans le code SourceCode pour Log4Net version 2.0 et je peux voir qu'il n'y a pas de contrepartie pour la journalisation Innexception. C'est la limitation actuelle de Log4Net (version 2) qu'elle ne prend pas en charge le rendu d'InnErexception hors de la boîte. C'est pourquoi vous commenceriez à utiliser Nlog car il a une prise en charge intégrée au rendu InNeReXception - Lien


0 commentaires