【发布时间】:2012-02-22 08:07:20
【问题描述】:
我使用 log4j 发送异常邮件。
我的 log4j 配置:
log4j.rootLogger=info, stdout, errmail
log4j.appender.errmail=cz.toby.utils.log.ErrSmtpAppender
log4j.appender.errmail.to=my_email@email.cz
log4j.appender.errmail.subject=Error -
log4j.appender.errmail.layout=org.apache.log4j.HTMLLayout
log4j.appender.errmail.threshold=debug
它工作得很好,但我想要的是用异常名称动态更改主题的内容。
我的 appender 看起来像这样:
public class ErrSmtpAppender extends SMTPAppender {
@Override
public void activateOptions() {
setSMTPHost("xxxxx");
setFrom("from_email@email.cz");
setBufferSize(50);
super.activateOptions();
try {
msg.setSubject(msg.getSubject() + ", node: " + InetAddress.getLocalHost().getHostName());
} catch (Exception e) {
// do nothing, only cannot set host to subject
}
}
}
如何以编程方式设置具有异常名称的主题?我试图在互联网上找到它,但我只找到了相似的主题,但不是我真正想要的。
【问题讨论】:
-
catch 块中是否发生异常?你能张贴那里发生的事情而不是吞下它吗?另外为什么不使用类似于 setFrom() 的 SMTPAppender 形式的 setSubject() 为什么要直接在 msg 上调用它?
-
这个 try/catch 块现在不重要了。如果是我无法使用“InetAddress.getLocalHost().getHostName()”获取主机名的情况,所以它不介意它只是从没有主机名的属性文件中设置主题......我想要什么是获取我在应用程序中的任何位置捕获的异常的名称并将其设置到主题中。我希望这是可以理解的 :) ... 和 msg.setSubject() 或 setSubject(),你是对的,我可以使用这个变体。
-
哦,我不能使用 setSubject(),它由于某种原因不起作用。我必须调用 msg.setSubject() 但这不是我上一个问题的重点。
标签: java exception-handling log4j smtpappender