我们正在迁移到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这样的appender(我认为我也需要转换xml)。 如果我正确地理解了这个How to specify Log4J 2.x config location?,我将在这里(在我的init方法中)使用null ClassLoader的初始化方法而不是DOMConfigurator?
这是一个古老的项目,多年来由许多不同的人编写,这是一个烂摊子。谢谢你的帮助。