我正在使用Log4j发送错误的电子邮件日志,并希望在java中的log4j中设置SMTP设置,而不是在属性文件中。设置密码有效,我可以成功发送电子邮件
private static final Logger logger = Logger.getLogger("emailer");
(...)
Enumeration<?> enm = logger.getAllAppenders();
while (enm.hasMoreElements()) {
Object element = enm.nextElement();
if (element instanceof SMTPAppender) {
((SMTPAppender) element).setSMTPPassword(password);
}
}
但是,使用SMTPAppender中的其他setter不会做任何事情(设置主机,用户名等),log4j将继续使用属性文件的设置。
(...)
log4j.logger.emailer=stdout, email
log4j.additivity.emailer=false
log4j.appender.email=org.apache.log4j.net.SMTPAppender
log4j.appender.email.SMTPHost=smtp.gmail.com
log4j.appender.email.SMTPPort=465
log4j.appender.email.SMTPUsername=username@gmail.com
log4j.appender.email.SMTPPassword=-
log4j.appender.email.From=username@gmail.com
log4j.appender.email.to=username@gmail.com
log4j.appender.email.Subject=Error Alert
log4j.appender.email.layout=org.apache.log4j.PatternLayout
log4j.appender.email.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
log4j.appender.email.BufferSize=10
log4j.appender.email.Threshold=ERROR
答案 0 :(得分:1)
看起来您需要在更改名称或密码后调用activateOptions()。