2012-10-16 31 views
0

我使用Log4j在錯誤上發送電子郵件日誌,並且想要在java中設置log4j中的SMTP設置,而不是在屬性文件中設置。設置密碼的作品,我可以成功地用它發送電子郵件以編程方式設置SMTP設置的Log4j不完全正常工作

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的將繼續使用屬性文件中的設置。

(...) 

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 
[email protected] 
log4j.appender.email.SMTPPassword=- 
[email protected] 
[email protected] 
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 

回答

1

看起來您需要在更改名稱或密碼後調用activateOptions()。

相關問題