log4j.properties在非可执行jar文件之外

时间:2016-06-24 05:19:58

标签: java log4j

我有一个库(不可执行的)jar文件,我需要将log4j.properties放在jar外面。

在可执行jar文件中,我可以通过-Dlog4j.configuration传递路径。但是在这种情况下我怎么能这样做呢?

1 个答案:

答案 0 :(得分:0)

来自https://logging.apache.org/log4j/1.2/manual.html

  

确切的默认初始化算法定义如下:

     
      
  1. 将log4j.defaultInitOverride系统属性设置为任何其他值,然后" false"将导致log4j跳过默认初始化过程(此过程)。
  2.   
  3. 将资源字符串变量设置为log4j.configuration系统属性的值。指定默认初始化文件的首选方法是通过log4j.configuration系统属性。如果未定义系统属性log4j.configuration,则将字符串变量资源设置为其默认值" log4j.properties"。
  4.   
  5. 尝试将资源变量转换为URL。
  6.   
  7. 如果资源变量无法转换为URL,例如由于MalformedURLException,则通过调用org.apache.log4j.helpers.Loader.getResource(resource,Logger.class)从类路径中搜索资源。返回一个URL。注意字符串" log4j.properties"构成格式错误的网址。   有关搜索位置列表,请参阅Loader.getResource(java.lang.String)。
  8.   
  9. 如果找不到URL,则中止默认初始化。否则,请从URL配置log4j。   PropertyConfigurator将用于解析URL以配置log4j,除非URL以" .xml"结尾。扩展,在这种情况下将使用DOMConfigurator。您可以选择指定自定义配置程序。将log4j.configuratorClass系统属性的值作为自定义配置程序的完全限定类名。您指定的自定义配置程序必须实现Configurator接口。
  10.   

您可以使用PropertyConfigurator.configure初始化log4j并通过系统属性,另一个配置文件,环境变量等指定log4j.properties的路径。

但是,您可能不希望为JAR提供单独的日志记录机制/配置,而不是让它使用调用它的应用程序中的一个(<)。

相关问题