1

我有一个 Java 程序,它会每小时扫描一次日志文件,并在检测到错误时向 IT 发送电子邮件。记录器是使用 log4j.properties 文件配置的。

现在,我想在运行时更改电子邮件的收件人。代码如下所示:

SMTPAppender smtp = (SMTPAppender)(logger.getAppender("smtp"));
smtp.activateOptions();
smtp.setTo(email);
logger.removeAppender("smtp");  // I tried it with or without the two lines
logger.addAppender(smtp);       // It's the same result

当我调试它时,我可以在堆栈上看到 smtp 的 To 字段确实是我想要的电子邮件地址,但是当我logger.error(message);稍后调用它时,它仍然发送到配置文件中指定的电子邮件地址。

谁能告诉我为什么会这样?我知道我可以在运行时以编程方式创建 smtp appender,但我想知道是否有办法混合编程配置和属性文件配置。

4

0 回答 0