首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在带有Tomcat6的spring webapp中设置Commons Logging / Log4j时出现问题

在带有Tomcat6的spring webapp中设置Commons Logging / Log4j时出现问题
EN

Stack Overflow用户
提问于 2008-10-20 09:49:13
回答 5查看 51.9K关注 0票数 15

我在Tomcat6下部署的apring webapp中的日志设置有问题。

webapp使用commons-logging api,在运行时应该使用log4j。日志文件已创建,但仍为空-未出现任何日志条目。

设置如下:

WEB-INF/web.xml:

代码语言:javascript
运行
复制
 <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:

代码语言:javascript
运行
复制
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

WEB-INF/log4j.xml:

代码语言:javascript
运行
复制
<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控制台上的信息日志,但没有配置布局模式。

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-10-20 15:11:24

web上有大量有文档记录的实例,警告人们如何使用commons-logging。正因为如此,SLF4J正变得越来越受欢迎。

考虑到您对在Log4j中使用Tomcat不感兴趣,您应该直接在应用程序中使用Log4j。特别是如果您将来没有机会切换日志记录框架的话。它将降低应用程序的复杂性,并消除commons-logging带来的任何类加载器问题。

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

票数 10
EN

Stack Overflow用户

发布于 2008-10-22 18:25:57

要特别小心,不要让将log4j.jar放在Tomcat commons/lib目录中。如果根类加载器加载log4j库,那么当您的when应用程序也尝试使用log4j时,您将遇到冲突和初始化问题。

如果您需要使用log4j来执行常见的Tomcat日志记录,则需要注意您的well应用程序不会尝试加载log4j。如果您在服务器上有多个webapp,那么您需要遵守规则,使每个webapp的日志初始化不会影响其他webapp的初始化。每个webapp将需要使用唯一的Logger ID,这可以通过唯一的包名来完成。

在Tomcat中使用多个webapp的公共log4j会导致严重的冲突,因为您拥有的共享库都想做日志记录,比如Hibernate或Spring。下一个尝试初始化log4j的one应用程序可能会关闭前一个应用程序的记录器。它可以是一团糟。

票数 5
EN

Stack Overflow用户

发布于 2011-04-01 08:23:43

我也有类似的问题,现在找到了解决方法。使用附加参数启动tomcat:

-Dorg.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/217929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档