我们正在迁移到 log4j2。我在任何地方都找不到如何重写部分代码。
LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
Configuration config = context.getConfiguration();
RollingFileAppender fileAppender = config.getAppender("file");
(...)
fileAppender.setFile(newFileName); //this part
fileAppender.activateOptions(); //and this part
有谁知道它应该如何正确编写?任何帮助将不胜感激,如果这是一个愚蠢的问题,我很抱歉。
编辑:我的类(使用 log4j v.1)实现 LoggerFactory 也有问题。我在这里找到:log4j migration to log4j2我应该使用“其他机制”。我不确定是否应该在这里使用 LoggerContextFactory 或其他东西:
class MyNameLoggerFactory implements LoggerFactory {
(...)
void init() {
//sets quiet mode
//init DOMConfigutator
//configure using log4j config xml
}
Appender getFileAppender(File file) {
//returns a FileAppender
}
@Override
public MyNameLoggerFactory makeNewLoggerInstance(String name) {
return new MyNameLoggerFactory (name);
}
}
此处加载的 XML 配置具有诸如 EmailSender、ConsoleAppender 和 RollingFileAppender 之类的附加程序(我认为我也需要转换 xml)。如果我理解这个如何指定 Log4J 2.x 配置位置?正确地,我将在这里(在我的 init 方法中)使用带有 null ClassLoader 的初始化方法,而不是 DOMConfigurator?
这确实是一个老项目,多年来由许多不同的人编写,一团糟。感谢您的任何帮助。