【发布时间】:2022-01-08 05:24:48
【问题描述】:
我创建了一个log4j2 配置文件,在初始化它之前,应用程序中已经存在一个LoggerContext。我正在停止它并开始初始化。我正在尝试加载配置文件,如下所示,但我无法看到加载的配置和FileAppender、ConsoleAppender。它返回 DefaultConfiguration 和现有的 LoggerContext。
我尝试了多种方法来停止现有的LoggerContext,例如LoggerContext context = (LoggerContext) LogManager.getContext(true); context.stop();,但它似乎不起作用并且配置未加载。我正在使用 log4j 2.17.1。
LoggerContext context = (LoggerContext) LogManager.getContext(true);
Configurator.shutdown(context);
try {
uri = new URI(getResourceFromBundle("org.example.loggingframework", "resources/iceLog4j2.xml").toString());
InputStream is = new FileInputStream(uri.getPath());
ConfigurationSource source = new ConfigurationSource(is);
LoggerContext ctx = (LoggerContext) LogManager.getContext(true);
ctx.stop();
Configuration config = ConfigurationFactory.getInstance().getConfiguration(ctx, source);
ctx.start(config);
LoggerContext loggerContext = (LoggerContext) LogManager.getContext(true);
catch (URISyntaxException | IOException e) {
e.printStackTrace();
}
【问题讨论】: