Log4j以编程方式设置SMTP设置无法完全正常工作 [英] Log4j programmatically setting SMTP settings is not completely working

查看:86
本文介绍了Log4j以编程方式设置SMTP设置无法完全正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Log4j发送有关错误的电子邮件日志,并希望在java中的log4j中而不是在属性文件中设置SMTP设置.设置密码有效,我可以用它成功发送电子邮件

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

但是,在SMTPAppender中使用其他设置器没有任何作用(设置主机,用户名等),log4j将继续使用属性文件的设置.

However, using the other setters in SMTPAppender does nothing ( setting host, username, etc. ), and log4j will keep using the properties file's settings.

(...)

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().

It looks like you need to call activateOptions() after you change the name or password.

这篇关于Log4j以编程方式设置SMTP设置无法完全正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆