解决 WARN No appenders could be found for logger log4j

来源:互联网 发布:第三方软件 游戏 编辑:程序博客网 时间:2024/04/28 20:15

今天启动tomcat发现 WARN No appenders could be found for logger log4j

看了篇文章才知道。是我把hibernate的包放入了tomcat/common/lib下导致的原因。原文引如下

 

log4j:WARN No appenders could be found for logger log4j:WARN Please initialize the log4j system properly. “正常”配置log4j后,启动Tomcat,报告上述错误。看到这段信息给我的感觉是,在log4j.properties属性文件中,没有找到与指定logger对应的appender,让我初始化log4j。可是我已经在环境变量里指定属性文件log4j.properties了,每次运行启动Tomcat还是报告上述信息。虽然是WARN信息,而且日志还是可以正常输出,但是,心理还是别扭,肯定是在配置环境的时候哪里出现了问题。一般情况下,程序报告错误信息,我都认为是人的问题,不是计算机的问题。于是我开始了艰苦卓绝地查找错误的旅程。上网搜索一下相关的错误信息,发现有很多类似的帖子,虽然错误信息稍有所差别,但是共同的是都有上面警告信息。里面所写的相关的解决方法,也都不是很有效。这个问题折磨了我好久,郁闷!无意中看到这么一句话,“一个干净的运行环境对程序来说,是非常重要的。”顿时我有一种醍醐灌顶的感觉,帅!可能是我放jar包的位置不对。但是,该放的地方都放了。问题就在这儿了,就是有可能不该放的地方也放了。这是一个在程序员工作中经常出现的问题,在运行过很多的程序的环境下,其中的jar包可能到处都是,如果没有及时的进行清理工作,将会对后面开发的程序不一定什么时候,产生意想不到的影响。回到正题,现在我想到的问题是有可能在程序还没有读取到我指定的log4j.properties属性文件时,就已经开始运行与log4j相关的log4j-1.2.8.jar文件了,所以才会出现报告没有初始化的警告信息。那么究竟是在哪里提前执行了log4j-1.2.8.jar文件了呢?引起我最大怀疑的就是C:/Borland/JBuilder2005/thirdparty/jakarta-tomcat-5.0.27/common/lib下的这个jar文件。事实也确实是这样,当我将这个jar文件删除掉的时候,从新运行启动Tomcat后,这个信息就再也没有出现。现在回头来想一下,为什么会出现这种情况呢?我自己分析有可能是因为以下的原因。由于是在JBuilder中集成的第三方软件,当启动JBuilder中的Tomcat时,首先他会自动查找工程中用到的自身文件夹下的common/lib下的jar文件,如果找到的话,就进行加载,然后才查找conf/下的log4j.properties等相关的配置文件,正是因为这样,才会报告没有初始化的信息。如果在common/lib下没有找到工程中要用到的jar文件,就先配置conf/下的配置文件,然后到工程中自身包含的lib下查找所用到的jar文件,这时就先把log4j的初始化工作作完了,所以这时在启动Tomcat时就不再提示没有初始化的警告信息了。总结:在配置各种运行环境的时候,不要认为将要用到的jar文件拷贝到所有的相关的lib文件夹下,就会省很多事,想当然地认为用到时会自动调用,但是当相关配置有先后顺序的时候,会带来很多不必要的麻烦以及意想不到的问题。所以要充分地了解jar文件的用途以及他应该在的位置。提示:在环境变量中可以设置以下两个变量 CATALINA_OPTS -Dlog4j.configuration=file:/C:/Borland/JBuilder2005/thirdparty/jakarta-tomcat-5.0.27/conf/log4j.properties CLASSPATH C:/Borland/JBuilder2005/lib/log4j-1.2.8.jar; 但是我运行成功后,我将这两个变量分别删掉后,程序运行仍然正常。如果你的程序运行时出现了某些问题,建议还是将这两个环境变量加上。

 

原创粉丝点击