使用 jar 中的默认 log4j2 配置文件

Using a default log4j2 configuration file from inside the jar

我在我的应用程序 jar 中放置了一个默认的 log4j2 配置文件 (log4j2.xml)。
如果用户没有定义自己的配置文件,我想加载我的默认配置。

我可以通过这种方式获取默认配置流:

InputStream defaultConfigStream = MyApp.class.getClassLoader().getResourceAsStream("log4j2.xml");

但这对我没有帮助,因为以下代码采用配置文件的完整路径来检查其存在并加载它。

System.setProperty("log4j.configurationFile", file.toUri().toURL().toString());

我怎样才能做到这一点?我不想硬编码我的默认配置设置,比如 here.

使用 DomConfigurator,参见:https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/DOMConfigurator.html,您可以解析 XML 并将其提供给配置器,在初始化记录器时它会自动考虑配置

据我所知,这很简单。如 documentation(第 7 点)中所述,Log4j2 将自动在类路径上查找 log4j2.xml。 因此,如果用户没有定义自己的配置文件,我不会调用任何方法来加载我的默认配置。