9
votes

Log4Net SMTP Appendender Envoyez uniquement un e-mail lors de l'erreur avec le journal complet (débogage et info et error). Seulement lorsque l'application se termine

J'essaie de configurer un appendeur SMTP dans le fichier log4net.config que j'ai. Le problème est que j'ai l'air sur Internet et que je ne trouve pas comment envoyer un courrier électronique lorsqu'une erreur se produit avec toutes les autres informations de journal incluses telles que Info, débogage, erreur, fatal. Seulement lorsque l'application se termine (pas à chaque fois qu'une erreur se produit).

Alors je veux seulement recevoir cet email lorsque: L'application se termine + Avec toutes les informations de journal (débogage, info, erreur, fatal) + Seulement si une erreur s'est produite.

Élaborer un peu plus Ceci est dû à la façon dont je traite mes exceptions en C Sharp, avec une manipulation de niveau multiples sur tout le lieu et donc si une erreur se produit, peu importe combien de fois je veux seulement recevoir un email. Aussi, je ne veux pas utiliser plusieurs journaux, mais plutôt juste un à root.

Merci.


0 commentaires

3 Réponses :


2
votes

Cela ressemble à un problème de configuration de l'application plutôt qu'à un problème de configuration log4net. Je suggérerais de mettre une méthode à la fin de votre application qui vous emaille le fichier journal si elle détecte qu'il y a une erreur à l'intérieur. Vous pouvez détecter cette erreur en renvoyant une variable globale de False à TRUE dans tous les endroits où vous enregistrer les erreurs ou vous pouvez attendre jusqu'à la fin de votre application, puis lire le fichier journal pour voir s'il contient des erreurs. La première méthode serait plus rapide à l'arrêt, mais cela signifie modifier votre code dans plusieurs endroits. Ce dernier vous permettrait d'ajouter une méthode, mais cela pourrait prendre plus de temps dans un fichier volumineux.

Une troisième option serait d'envoyer des erreurs à un deuxième fichier journal (de sorte qu'ils vont à deux endroits) en utilisant log4net. Ensuite, lorsque votre application se ferme et que vous vérifiez pour voir si vous devez envoyer un courrier électronique au journal, vérifiez simplement l'existence du fichier d'erreur uniquement. S'il existe, supprimez-la (donc ce n'est pas là la prochaine fois) et envoyez un courriel au journal complet.


2 commentaires

Comment vérifiez-vous à la fin du programme si des erreurs ont eu lieu à quoi recherchez-vous? Dans l'enregistreur, l'appendeur?, Quelles méthodes utilisées et les champs. Pouvez-vous coller du code s'il vous plaît.


J'ai constaté que vous pouvez rencontrer des problèmes de fichier IO lors de la tentative d'envoi du fichier journal réel (un autre processus est ouvert). Même si vous affleurez le fichier-filet, relâchez la serrure et copiez-la, je rencontrais toujours des problèmes IO si Log4Net roulait les fichiers journaux à l'heure.



6
votes

smtpapender ne peut pas y accomplir seul. Donc, ce que j'ai fait était de créer un autre appendeur qui soit à un appendend de type MyMateAppender . J'ai défini un seuil sur cet enregistreur pour inclure uniquement des messages qui doivent déclencher le smtpapender , par exemple. erreur . Nous utilisons cela pour déterminer ultérieurement si nous voulons envoyer le courrier électronique qui a plus de niveaux enregistré.

Nous ne nous soucions pas des messages du My MyMateAppender - Nous vous soucions de contenir des messages à la fin. Les messages que nous obtenons par email proviennent du smtpapender .

à la fin de mon programme, je vérifie l'appendeur de la mémoire pour voir si ses getventes () contiennent des événements. Si c'est le cas, je ne pas stop the smtpapender de fonctionner normalement.

log4net configs pour les deux annexes: xxx

à la fin de l'application exécutoire ceci pour désactiver le smtpapender si le < Code> Errorholder L'appendeur est vide: xxx


3 commentaires

Cela semble être une version assez complexe de ce que j'ai suggéré dans ma solution.


C'est correct, vous aviez raison, j'ai pris votre idée de vérifier à la fin, c'est vrai. Mais lors de la recherche de la façon de regarder à l'intérieur des appendeurs pour certaines occenses de niveau (être ici). Je ne pouvais trouver aucune chose en ce qui concerne les annexes, je pouvais obtenir les événements au sein d'eux. Donc, le seul que je puisse trouver est un mayAppender et j'ai utilisé cela.


Ici, un message sur le suivi des problèmes de log4net: Stackoverflow .com / questions / 756125 / ...



0
votes

Modifier le titre à l'erreur. Également Journal 4Net envoie uniquement l'e-mail lorsque l'application est codes.Vous pouvez l'envoyer plus tôt. mais que vous devez d'abord le copier (car le fichier Org est toujours utilisé) et que vous pouvez envoyer par courrier électronique à la copie.


0 commentaires