我使用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
}
}
}
如何以编程方式设置具有例外名称的主题?我试图在互联网上找到它,但我发现只有类似的主题,但不是我想要的。
答案 0 :(得分:2)
@Toby好的我误解了你想要实现的目标。您想要电子邮件主题中的日志消息吗?
我认为你需要访问Appender的CyclicBuffer cb:
msg.setSubject("Logged Message String" + cb.get(cb.length()).getMessage());
或者你可能还需要做一个ObjectRenderer
ThreadGroupRenderer stackTraceRenderer = new ThreadGroupRenderer();
msg.setSubject("First 100 Chars of Stack Trace: " + stackTraceRenderer(cb.get(cb.length()-1).getMessage()).substring(0,99));