一尘不染

Spring Webapp中使用tomcat 6的Commons Logging / Log4j设置问题

tomcat

我在tomcat 6下部署的apring webapp中的日志记录设置有问题。

该webapp使用commons-logging API,在运行时应使用log4j。日志文件已创建,但仍为空-没有日志条目发生。

设置如下:

WEB-INF / web.xml:

 <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>/WEB-INF/log4j.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>

WEB-INF / classes / commons-logging.properties:

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

WEB-INF / log4j.xml:

<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

  <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
    ...
  </appender>
  <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
    <param name="File" value="${catalina.home}/logs/my.log"/>
    ...
  </appender>

  <logger name="my.package">
    <level value="INFO"/>
  </logger>

  <root>
    <level value="ERROR"/>
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE"/>
  </root>
</log4j:configuration>

文件logs / my.log已创建,但没有日志出现。在tomcat控制台上的are info日志,但未配置布局模式。

commons-logging-1.1.1.jar和log4j-1.2.14.jar包含在WEB-INF / lib中。知道这里有什么问题吗?


阅读 207

收藏
2020-06-16

共1个答案

一尘不染

Web上有许多记录在案的实例,警告人们使用commons-
logging。如此之多,以至于SLF4J越来越受欢迎。

考虑到您不希望将Tomcat与Log4j一起使用,您应该只在应用程序中直接使用Log4j。特别是如果将来没有机会切换日志记录框架。这将减少应用程序的复杂性,并消除公共记录带来的任何类加载器问题。

这应该是相对容易的搜索并替换为您的文本,因为commons-logging和log4j都为它们的日志记录方法使用了类似的调用结构。

2020-06-16