我正在尝试使用log4j编程api之一配置根记录器的模式。这就是我所拥有的,它删除了默认的记录器,我知道 reconfigure
, setLevel
以及 setRootLevel
正在工作,但是新的 ConsoleAppender
实际上没有记录任何东西
private static void configureLog4j(Level rootLevel, Map<String, Level> levelMap) {
var pattern = PatternLayout.newBuilder().withPattern( "%highlight{[%t] %-5level: %msg%n%throwable}\n" ).build();
var console = ConsoleAppender.createDefaultAppenderForLayout( pattern );
var config = LoggerContext.getContext().getConfiguration();
config.addAppender( console );
var root = config.getRootLogger();
for ( var appenderRef : root.getAppenderRefs() ) {
root.removeAppender( appenderRef.getRef() );
}
root.addAppender( console, rootLevel, null );
Configurator.setRootLevel( rootLevel );
Configurator.setLevel( levelMap );
Configurator.reconfigure(config);
}
我也尝试了另一个api,同样的运气。如何修复代码?
这里有一个完整的链接到我的来源,对不起,我一直在工作,所以行号可能会改变。
https://github.com/xenoterracide/brix/blob/master/src/main/java/com/xenoterracide/brix/application.java#l108
1条答案
按热度按时间u1ehiz5o1#
更新
以编程方式配置log4j2的唯一方法似乎是使用configurationbuilder创建一个新的配置。这样它将停止默认配置并用新配置初始化。
起初的
也许您的意思是在记录器重新配置之后设置level和rootlevel。您使用的方法将应用于现有记录器。