有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案