问题遇到的现象和发生背景
之前公司老系统,用的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的功能,感谢帮忙看看。