【问题标题】:Override log4j.properties覆盖 log4j.properties
【发布时间】:2011-05-14 14:48:58
【问题描述】:

我的 java 应用程序引用了一个使用 log4j 日志记录的第 3 方 jar 文件。问题是这个 jar 包含它自己的 log4j.properties 文件,这会导致我的机器上出现拒绝访问异常,但我无法控制 jar 文件来更改其内容。

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

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

【问题讨论】:

    标签: java properties jar log4j propertyconfigurator


    【解决方案1】:

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

    【讨论】:

    • LOG4J_CONFIGURATION_FILE 特定于 Log4j 2.x。问题是关于 Log4j 1.x。
    【解决方案2】:

    如果这些都不起作用

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

    BasicConfigurator.configure();

    它对我有用

    【讨论】:

      【解决方案3】:

      有几种方法可以覆盖 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 系统属性的值被视为自定义配置器的完全限定类名。您指定的自定义配置器必须实现配置器接口。

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 2017-03-27
      • 2015-05-04
      • 2011-06-11
      • 2012-01-28
      • 2012-02-16
      相关资源
      最近更新 更多