今天在写一个J2EE的项目要用Log4j来记录相关日志,结果出现了一些错误,在网上SO了一下看到一个文章如下: 升级Commons Logging居然出了问题,把Commons Logging升级到1.0.4,启动服务器出现了 java.lang.NoSuchMethodError: org.apache.log4j.Category.log(Ljava/lang/String;Lorg/apache/log4j/Level;Ljava/lang/Object;Ljava/lang/Throwable;)V 认为是log4j的问题 ,把log4j升级到1.2.9,还是不行,升级到1.2.11,错误依旧,只好看源码了,Log4JCategoryLog.java中,有这末一句,"deprecated Use {@link Log4JLogger} instead",原来是class目录下commons-logging.properties的问题 原来的commons-logging.properties org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog 更改后的commons-logging.properties org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger class目录下log4j..properties文件配置信息 # For JBoss: Avoid to setup Log4J outside $JBOSS_HOME/server/default/deploy/log4j.xml! log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.logfile=org.apache.log4j.RollingFileAppender # If programmed properly the most messages would be at DEBUG log4j.logger.com.tatan.dao.jdbc=DEBUG 注意不要多写stdout,log4j.logger.com.tatan.Myclass=DEBUG, stdout,它会会继承root的appender ,会重复输出了 webapproot的配置 使用Log4j连续碰到的三个问题 问题1: log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.TldConfig). 这个原因就是配置文件出错了,也就是WEB-INF/classes文件夹下的commons-logger.properties配置文件有问题。 这是默认的: org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JCategoryLog 问题2: 在导入包common-logging.jar和log4j-1.2.14.jar后在/WEB-INF/classes文件夹下并没有出现commons-logger.properties和你的log4j.properties配置文件,这个问题我是复制的别的案例的两个文件。 原因我还没弄清楚,有高人知道留言哦。 问题3: Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Category.log 原因:commons-logger.jar和你的log4j.jar版本不兼容。前者是对后者的一个封装,而hibernate中主要是使用前者。前者的功能就是:它封装了一些通常的日志类,比如log4j,java.util.logging.Logger 等,使用的log4j,但是由于版本不对,commons-logger中用了log4j中的那个类,在当前的log4j版本中已经不存在了,所以报错 解决方法: 将class目录下commons-logging.properties 把这所有的弄好之后终于出现了预期的结果。 要是还有问题希望大家一起探讨...
|
commons-logging结合Log4j的问题
最新推荐文章于 2022-07-27 11:50:13 发布