log4j升级到log4j2的对象替换问题

问题遇到的现象和发生背景

之前公司老系统,用的log4j,现在由于安全漏洞原因要升级到log4j2

用代码块功能插入代码,请勿粘贴截图

老系统使用log4j获取logger对象和配置信息代码如下,获取到logger对象之后,可以使用logger.addAppender()来设置appender和level,但是log4j2没有这些方法了:

    this.level = 5;
    this.theLog = Logger.getLogger(UTLogger.class);
    PatternLayout patternLayout = new PatternLayout("[%d{HH:mm:ss:SSS}] %m%n");
    ConsoleAppender consoleAppender = new ConsoleAppender((Layout)patternLayout);
    this.theLog.addAppender((Appender)consoleAppender);
    this.theLog.setLevel(Level.DEBUG);

log4j2我目前的代码
    final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
    final org.apache.logging.log4j.core.config.Configuration config = ctx.getConfiguration();
    PatternLayout layout= PatternLayout.createLayout("[%d{HH:mm:ss:SSS}] %m%n", null, config,null, Charset.forName("UTF-8"),true,false,null,null);
    Appender appender =ConsoleAppender.createAppender(layout, null, "SYSTEM_OUT", "Console", "false", "true");
    appender.start();

    LoggerConfig root=new LoggerConfig();
    root.setLevel(Level.DEBUG);
    root.addAppender(appender, null, null);

运行结果及报错内容

log4j和log4j2的获取logger对象区别为,一个是Logger.getLogger(),一个是LogManager.getLogger(),获取到logger对象之后log4j可以直接用logger.addAppender()和setLevel()方法来定制化每一个logger的配置,但是log4j2没有这些方法,如何来定制化每个logger的配置。

我想要达到的结果

由于系统是20年前的老系统,不是web项目,没有xml和yml等配置说法,用纯java代码实现log4j2的功能,感谢帮忙看看。