从log4j迁移到log4j2 - FileAppender设置新文件名& acitvateOptions

时间:2018-05-10 13:13:57

标签: java log4j migration log4j2 fileappender

我们正在迁移到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?

这是一个古老的项目,多年来由许多不同的人编写,这是一个烂摊子。谢谢你的帮助。

0 个答案:

没有答案