我在我的应用程序jar中放置了一个默认的log4j2配置文件(log4j2.xml) 如果用户没有定义自己的配置文件,我想加载我的默认配置。
我可以通过这种方式获得默认配置的流:
InputStream defaultConfigStream = MyApp.class.getClassLoader().getResourceAsStream("log4j2.xml");
但这对我没有帮助,因为以下代码会获取配置文件的完整路径以检查其存在并加载它。
System.setProperty("log4j.configurationFile", file.toUri().toURL().toString());
我怎样才能做到这一点?我不想硬编码我的默认配置设置,例如here。
答案 0 :(得分:0)
使用DomConfigurator,请参阅:https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/DOMConfigurator.html,您可以解析XML并将其提供给配置程序,初始化记录器时它会自动考虑配置
答案 1 :(得分:0)
我发现,这很简单。与documentation(第7点)中描述的一样,Log4j2将自动在类路径中查找log4j2.xml。 因此,如果用户没有定义自己的配置文件,我不会调用任何方法来加载我的默认配置。