【发布时间】:2010-11-29 17:19:17
【问题描述】:
我正在尝试使用 log4j 发送包含来自后台进程的日志记录语句的电子邮件报告。我希望为每个进程运行发送一封电子邮件,而不是为每个日志记录语句发送一封电子邮件。我查看了SMTPAppender,但没有看到在流程完成后手动发送报告的方法。我相信TriggeringEventEvaluator 可能是关键,但我遇到的一个问题是如何获得TriggeringEventEvaluator 实例的句柄。我被困在使用 log4j 1.2.14 并且在 1.2.15 中引入了 SMTPAppender.getEvaluator() 方法。有什么想法吗?我什至走在正确的轨道上吗? SMTPAppender.close() 方法在这里有用吗?
我希望能够做到这一点:
log.info(message1);
log.info(message2);
log.info(message3);
log.sendMail();
在考虑了更多之后,我认为我需要澄清我希望实现的目标。我正在尝试从运行石英作业中捕获日志并将生成的日志作为电子邮件发送。石英作业将一堆服务方法调用到各种服务中。我希望包含这些服务方法执行的任何日志记录以及石英作业本身的日志记录。我在想我可以执行以下操作来捕获所有日志记录,但它不起作用。
// 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();
【问题讨论】:
-
this post 可能会有所帮助