log4j在哪里/如何查找log4j.properties文件?

2022-09-01 12:45:09

我正在一个简单的测试应用程序中尝试log4j。我在 eclipse 中创建了一个新的 Java 项目,并将 log4j JAR (v1.2.16) 添加到我的构建路径中。然后,我创建了一个打印 Hello World 的简单类。然后,我使用 log4j 类来记录信息消息。当我运行应用时,我看到日志消息,使用我假设的默认追加器和布局。伟大。我遇到麻烦的是添加自己的配置。这就是我所做的:Logger

使用自定义追加器和日志级别创建了一个 log4j.properties 文件,并将其放入 src 文件夹(编译后将其复制到 bin 文件夹)。运行应用 - 无更改。

我尝试添加.运行应用 - 无更改。没有错误,但没有变化。PropertyConfigurator.configure("log4j.properties")

我必须做些什么才能让log4j加载我的配置文件?


答案 1

“默认初始化过程”标题下的手册中,您将找到以下内容:

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

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

答案 2

唉。我发现问题是 eclipse 导入了错误的类。它导入了java.util.logging.Logger,当然它有自己的配置,与log4j不同。哦,好吧,希望其他人这样做,并通过阅读这个问题来解决它。Logger


推荐