log4j.properties没有从jar中获取

时间:2011-03-23 09:12:43

标签: java logging log4j

我的服务器的类路径中有一个jar,它包含jar根目录下的log4j.properties文件,用于记录代码。当jar中的代码运行时,代码的日志记录不会发生。当我使用 java -Dlog4j.debug 选项分析问题时,我知道log4j正在加载 axis-ant.jar 的log4j.properties文件(这也是在我的类路径上)并使用它而不是我的jar的属性文件。

当我随后从类路径中删除了axis-ant.jar时,我的jars log4j.properties文件立即被选中并记录了我的代码。

有人可以解释为什么我的log4j.properties没有被加载而在axis-ant.jar存在的时候?

令人惊讶的是,类路径中存在的带有axis-ant.jar的jar正在另一台服务器上成功运行并正确运行..服务器都安装了相同的java 5版本和相同版本的log4j jar

4 个答案:

答案 0 :(得分:9)

您应该查看log4j手册。 “默认初始化过程”一节描述了log4j如何尝试查找初始化文件,并解释了匹配特殊配置的可能性(例如,通过设置系统属性log4j.configuration)。

如果您不想进行任何特殊配置,则必须确保您的配置文件是类路径中的第一个配置文件。

答案 1 :(得分:1)

根据应用程序服务器在类路径中找到jar的顺序,从jar中获取属性文件。现在没有办法确定地告诉从中加载属性文件的jar。

要解决此问题,大多数项目在服务器类路径本身中包含您的log4j.properties文件。这样,这个文件就是第一个要加载的属性文件,这是你的日志代码得到的文件。

答案 2 :(得分:0)

我注意到很确定,但这可能是订单问题。无论第一个/最后一个加载哪个log4j.properties都会赢(我必须检查)。

答案 3 :(得分:0)

可能因为axis-ant.jar在classpath之前出现在你自己的jar中。我假设你的jar在classpath之前,然后axis-ant.jar应该帮助