java为什么log4j根记录器不接收我对它的一个appender所做的更改?
我有一个java程序,它会每小时扫描日志文件,并在检测到错误时向其发送电子邮件。记录器使用log4j进行配置。属性文件
现在,我想在运行时更改电子邮件的收件人。代码如下所示:
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,但我想知道是否有一种方法可以混合编程配置和属性文件配置
共 (0) 个答案