log4perl: comment envoyer toutes les alertes si au moins une au dessus d'un certain seuil ?
2 réponses
Papo
Bonjour à tous,
J'ai 2 problèmes que je cherche à résoudre avec log4perl, si quelqu'un a un
avis dessus ça serait très sympa de me tuyauter sur une solution:
1/ j'ai paramétré log4perl pour qu'il log tout dans un fichier et sur
l'écran et aussi pour qu'il m'envoie un mail mais uniquement en cas d'erreur
de l'appli (minlevel = error), ça marche mais évidement le mail ne contient
que les erreurs.
je voudrais qu'en cas d'erreur le mail contienne aussi toutes les autres
notifications, même de niveau inférieur (info, debug, etc)
2/ dans un genre différent, je voudrais aussi envoyer un mail mais de façon
conditionelle, c'est à dire que suivant certaines conditions j'envoie un
mail ou non, et cette condition n'est absolument pas liée à un quelconque
niveau de notification, simplement je voudrais annuler l'envoi du mail final
si mon programme n'a effectué aucun traitement, par contre s'il a effectué
un traitement qu'il soit en erreur ou pas je veux envoyer le mail.
je ne vois pas trop comment faire, toute aide serait bienvenue :-)
j'ai pensé à utiliser le appender string par exemple et à la fin du
programme s'il y a eu une erreur ou pas j'envoi le contenu du buffer par
mail. mais c'est pas très élégant
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Mark Clements
Papo wrote:
Bonjour à tous,
J'ai 2 problèmes que je cherche à résoudre avec log4perl, si quelqu'un a un avis dessus ça serait très sympa de me tuyauter sur une solution:
1/ j'ai paramétré log4perl pour qu'il log tout dans un fichier et sur l'écran et aussi pour qu'il m'envoie un mail mais uniquement en cas d'erreur de l'appli (minlevel = error), ça marche mais évidement le mail ne contient que les erreurs.
je voudrais qu'en cas d'erreur le mail contienne aussi toutes les autres notifications, même de niveau inférieur (info, debug, etc)
quelque chose comme:
my $logger = Log::Log4perl->get_logger('somename.mailer');
2/ dans un genre différent, je voudrais aussi envoyer un mail mais de façon conditionelle, c'est à dire que suivant certaines conditions j'envoie un mail ou non, et cette condition n'est absolument pas liée à un quelconque niveau de notification, simplement je voudrais annuler l'envoi du mail final si mon programme n'a effectué aucun traitement, par contre s'il a effectué un traitement qu'il soit en erreur ou pas je veux envoyer le mail.
je ne vois pas trop comment faire, toute aide serait bienvenue :-)
j'ai pensé à utiliser le appender string par exemple et à la fin du programme s'il y a eu une erreur ou pas j'envoi le contenu du buffer par mail. mais c'est pas très élégant
Je pense que c'est ce que je ferais. Ce n'est pas toujours possible de trouver une solution élégante :) Aussi, ce n'est pas la peine de passer beaucoup de temps pour trouver un solution parfait, quand on a déjà une solution qui marche.
J'ai 2 problèmes que je cherche à résoudre avec log4perl, si quelqu'un a un
avis dessus ça serait très sympa de me tuyauter sur une solution:
1/ j'ai paramétré log4perl pour qu'il log tout dans un fichier et sur
l'écran et aussi pour qu'il m'envoie un mail mais uniquement en cas d'erreur
de l'appli (minlevel = error), ça marche mais évidement le mail ne contient
que les erreurs.
je voudrais qu'en cas d'erreur le mail contienne aussi toutes les autres
notifications, même de niveau inférieur (info, debug, etc)
quelque chose comme:
my $logger = Log::Log4perl->get_logger('somename.mailer');
2/ dans un genre différent, je voudrais aussi envoyer un mail mais de façon
conditionelle, c'est à dire que suivant certaines conditions j'envoie un
mail ou non, et cette condition n'est absolument pas liée à un quelconque
niveau de notification, simplement je voudrais annuler l'envoi du mail final
si mon programme n'a effectué aucun traitement, par contre s'il a effectué
un traitement qu'il soit en erreur ou pas je veux envoyer le mail.
je ne vois pas trop comment faire, toute aide serait bienvenue :-)
j'ai pensé à utiliser le appender string par exemple et à la fin du
programme s'il y a eu une erreur ou pas j'envoi le contenu du buffer par
mail. mais c'est pas très élégant
Je pense que c'est ce que je ferais. Ce n'est pas toujours possible de
trouver une solution élégante :) Aussi, ce n'est pas la peine de passer
beaucoup de temps pour trouver un solution parfait, quand on a déjà une
solution qui marche.
J'ai 2 problèmes que je cherche à résoudre avec log4perl, si quelqu'un a un avis dessus ça serait très sympa de me tuyauter sur une solution:
1/ j'ai paramétré log4perl pour qu'il log tout dans un fichier et sur l'écran et aussi pour qu'il m'envoie un mail mais uniquement en cas d'erreur de l'appli (minlevel = error), ça marche mais évidement le mail ne contient que les erreurs.
je voudrais qu'en cas d'erreur le mail contienne aussi toutes les autres notifications, même de niveau inférieur (info, debug, etc)
quelque chose comme:
my $logger = Log::Log4perl->get_logger('somename.mailer');
2/ dans un genre différent, je voudrais aussi envoyer un mail mais de façon conditionelle, c'est à dire que suivant certaines conditions j'envoie un mail ou non, et cette condition n'est absolument pas liée à un quelconque niveau de notification, simplement je voudrais annuler l'envoi du mail final si mon programme n'a effectué aucun traitement, par contre s'il a effectué un traitement qu'il soit en erreur ou pas je veux envoyer le mail.
je ne vois pas trop comment faire, toute aide serait bienvenue :-)
j'ai pensé à utiliser le appender string par exemple et à la fin du programme s'il y a eu une erreur ou pas j'envoi le contenu du buffer par mail. mais c'est pas très élégant
Je pense que c'est ce que je ferais. Ce n'est pas toujours possible de trouver une solution élégante :) Aussi, ce n'est pas la peine de passer beaucoup de temps pour trouver un solution parfait, quand on a déjà une solution qui marche.
alors finalement voilà ce que j'ai fait, j'ai réécrit le dispatcher mail, j'ai ajouté 2 paramètres:
mail.send_level = 3
=> si un log level est >= à send_level j'envoie le mail à la fin, avec aussi les les log des levels inférieurs jusqu'à min_level
mail.send_trigger = Envoi du mail
=> si un log contient la chaine send_trigger j'envoie le mail sans conditions.
ça résoud mes 2 problèmes:
- en cas d'erreur j'ai bien un mail qui contient tous les log même debug, et info si j'ai mis min_level = debug - à la fin de mon traitement je peux envoyer le mail même sans erreurs en faisant simplement un message qulconque qui contient la sous chaine send_trigger:
$logger->info("Traitement terminé. Envoi du mail récapitulatif");
Pascal
merci pour ton avis.
alors finalement voilà ce que j'ai fait, j'ai réécrit le dispatcher mail,
j'ai ajouté 2 paramètres:
mail.send_level = 3
=> si un log level est >= à send_level j'envoie le mail à la fin, avec aussi
les les log des levels inférieurs jusqu'à min_level
mail.send_trigger = Envoi du mail
=> si un log contient la chaine send_trigger j'envoie le mail sans
conditions.
ça résoud mes 2 problèmes:
- en cas d'erreur j'ai bien un mail qui contient tous les log même debug, et
info si j'ai mis min_level = debug
- à la fin de mon traitement je peux envoyer le mail même sans erreurs en
faisant simplement un message qulconque qui contient la sous chaine
send_trigger:
$logger->info("Traitement terminé. Envoi du mail récapitulatif");
alors finalement voilà ce que j'ai fait, j'ai réécrit le dispatcher mail, j'ai ajouté 2 paramètres:
mail.send_level = 3
=> si un log level est >= à send_level j'envoie le mail à la fin, avec aussi les les log des levels inférieurs jusqu'à min_level
mail.send_trigger = Envoi du mail
=> si un log contient la chaine send_trigger j'envoie le mail sans conditions.
ça résoud mes 2 problèmes:
- en cas d'erreur j'ai bien un mail qui contient tous les log même debug, et info si j'ai mis min_level = debug - à la fin de mon traitement je peux envoyer le mail même sans erreurs en faisant simplement un message qulconque qui contient la sous chaine send_trigger:
$logger->info("Traitement terminé. Envoi du mail récapitulatif");