我有一个库(不可执行的)jar文件,我需要将log4j.properties
放在jar外面。
在可执行jar文件中,我可以通过-Dlog4j.configuration
传递路径。但是在这种情况下我怎么能这样做呢?
答案 0 :(得分:0)
来自https://logging.apache.org/log4j/1.2/manual.html:
确切的默认初始化算法定义如下:
- 将log4j.defaultInitOverride系统属性设置为任何其他值,然后" false"将导致log4j跳过默认初始化过程(此过程)。
- 将资源字符串变量设置为log4j.configuration系统属性的值。指定默认初始化文件的首选方法是通过log4j.configuration系统属性。如果未定义系统属性log4j.configuration,则将字符串变量资源设置为其默认值" log4j.properties"。
- 尝试将资源变量转换为URL。
- 如果资源变量无法转换为URL,例如由于MalformedURLException,则通过调用org.apache.log4j.helpers.Loader.getResource(resource,Logger.class)从类路径中搜索资源。返回一个URL。注意字符串" log4j.properties"构成格式错误的网址。 有关搜索位置列表,请参阅Loader.getResource(java.lang.String)。
- 如果找不到URL,则中止默认初始化。否则,请从URL配置log4j。 PropertyConfigurator将用于解析URL以配置log4j,除非URL以" .xml"结尾。扩展,在这种情况下将使用DOMConfigurator。您可以选择指定自定义配置程序。将log4j.configuratorClass系统属性的值作为自定义配置程序的完全限定类名。您指定的自定义配置程序必须实现Configurator接口。
醇>
您可以使用PropertyConfigurator.configure
初始化log4j并通过系统属性,另一个配置文件,环境变量等指定log4j.properties
的路径。
但是,您可能不希望为JAR提供单独的日志记录机制/配置,而不是让它使用调用它的应用程序中的一个(<)。