log4j.properties没有从jar中获取

我在服务器的类路径中有一个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

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

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

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

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

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

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