简体   繁体   English

Log4j以编程方式设置SMTP设置不能完全正常工作

[英]Log4j programmatically setting SMTP settings is not completely working

I'm using Log4j to send email logs on errors, and want to set the SMTP settings in log4j in java, and not in a properties file. 我正在使用Log4j发送有关错误的电子邮件日志,并希望在java中的log4j中而不是在属性文件中设置SMTP设置。 Setting the password works, and i can successfully send an email with it 设置密码有效,我可以用它成功发送电子邮件

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);
    }
}

However, using the other setters in SMTPAppender does nothing ( setting host, username, etc. ), and log4j will keep using the properties file's settings. 但是,在SMTPAppender中使用其他设置器不会执行任何操作(设置主机,用户名等),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

更改名称或密码后,您似乎需要调用activateOptions()。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM