log4j logger覆盖到jxl.log文件中

时间:2015-06-29 13:40:02

标签: java log4j jxl

我正在使用log4j进行记录。同时我也使用JXL来读/写Excel文件 但是,不是将日志写入log4j logger文件,而是写入jxl.log文件。

有什么问题?

1 个答案:

答案 0 :(得分:1)

您似乎一直在使用jxl-2.6.3.jar或类似版本。

如果您没有通过JVM参数指定特定名称,

Log4j会在类路径中选择具有默认文件名(即log4j.xmllog4j.properties)的第一个配置文件。由于jxl-2.6.3.jar包含log4j.xml,您最终将所有内容打印到jxl.log

中定义的log4j.xml

处理这类问题的最佳方法是使用-Dlog4j.debug JVM参数运行应用程序。这将在log4j初始化时打印几行代码。

log4j: Using URL [jar:file:/C:/YourApp/WEB-INF/lib/jxl-2.6.3.jar!/log4j.xml] for automatic log4j configuration.
log4j: Preferred configurator class: org.apache.log4j.xml.DOMConfigurator
...{Blah Blah Blah}

有很多方法可以解决这个问题。

  • 使用不包含jxl的{​​{1}} newer versions
  • 确保您的log4j.properties文件位于类路径之上。
  • log4j.xml(脏解决方案)中删除log4j.xml
  • 将VM参数中的配置文件名称传递为jxl-2.6.3.jar。这至少可以确保jxl-2.6.3.jar中的-Dlog4j.configuration=log4j.properties不会被使用。 (但是如果另一个jar与log4j.properties同名?)。
  • log4j.xml文件重命名为log4j.properties并添加VM参数log4j-yourApp.properties这肯定会有所帮助,这就是应该如何避免这种情况。

有关Log4j here

的更多详细信息