覆盖log4j.properties

时间:2010-11-23 17:18:36

标签: java properties jar log4j propertyconfigurator

我的java应用程序引用了使用log4j日志记录的第三方jar文件。问题是这个jar包含自己的log4j.properties文件,该文件在我的机器上导致访问被拒绝的异常,但是我没有控制jar文件来改变它的内容。

我已经尝试在我的应用程序的类路径中添加自己的log4j.properties文件,但它似乎没有效果。如果我尝试使用PropertyConfigurator以编程方式导入我自己的设置,log4j似乎首先加载jar文件的属性文件(导致异常)。

如何将log4j短路以忽略第三方jar文件的log4j.properties文件并使用我自己的文件?

3 个答案:

答案 0 :(得分:15)

有几种方法可以覆盖log4j.properties,其中一种方法是:

  • 使用log4j.xml 请参阅扩展程序

另一种方法是:

  • 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”构成格式错误的URL。有关搜索位置列表,请参阅Loader.getResource(java.lang.String)。
  • 如果找不到URL,则中止默认初始化。否则,请从URL配置log4j。 PropertyConfigurator将用于解析URL以配置log4j,除非URL以“.xml”扩展名结尾,在这种情况下将使用DOMConfigurator。您可以选择指定自定义配置程序。将log4j.configuratorClass系统属性的值作为自定义配置程序的完全限定类名。您指定的自定义配置程序必须实现Configurator接口。

参考:http://logging.apache.org/log4j/1.2/manual.html

答案 1 :(得分:0)

如果这些都不起作用

在您的应用配置中添加以下语句

BasicConfigurator.configure();

对我有用

答案 2 :(得分:0)

在启动应用程序时,尝试添加一个名为LOG4J_CONFIGURATION_FILE的环境变量。