J'essaie d'utiliser log4j pour envoyer des rapports disponibles contenant les instructions de journalisation à partir d'un processus en arrière-plan. Je souhaite recevoir un e-mail pour chaque exécution de processus, et non un e-mail pour chaque instruction de journalisation. J'ai regardé le SMTPAppender
, mais ne vois pas un moyen d'envoyer le rapport manuellement lorsque le processus se termine. Je crois que le TriggeringEventEvaluator
peut être la clé, mais un problème que je rencontre est de savoir comment obtenir un handle à l'instance TriggeringEventEvaluator
. Je suis coincé en utilisant log4j 1.2.14 et la méthode SMTPAppender.getEvaluator()
a été introduite en 1.2.15. Des pensées? Suis-je même sur la bonne voie? Est-ce que la méthode SMTPAppender.close()
entre en jeu ici?Utilisation de log4j pour envoyer des rapports de courrier électronique via le SMTPAppender
Je veux être en mesure de le faire:
log.info(message1);
log.info(message2);
log.info(message3);
log.sendMail();
Après avoir réfléchi à ce un peu plus, je pense que je dois préciser que j'espère accomplir. J'essaye de capturer la notation d'exécuter un travail de quartz et d'envoyer le journal résultant comme email. Le travail à quartz fait un tas d'appels de méthode de service dans divers services. Je veux que les méthodes de service soient consignées, ainsi que la journalisation des travaux de quartz. Je pensais que je pourrais faire quelque chose comme ce qui suit pour capturer toute la journalisation, mais cela ne fonctionne pas.
// at the beginning of quartz job
Logger logger = Logger.getRootLogger();
StringWriter sw = new StringWriter();
WriterAppender wa = new WriterAppender(new SimpleLayout(), sw);
logger.addAppender(wa);
// at the end of the quartz job
String report = sw.toString();
probablement [ce poste] (http://stackoverflow.com/a/42435452/1902296) peut être utile – gumkins