我正在构建一个部署到在 Linux 上运行的 WebSphere Portal Server 的 Portlet 应用程序。每个 Portlet WAR 都使用 Log4j 进行日志记录,配置如下,每个 WAR 都有两个日志文件:
log4j.logger.im.the.package=DEBUG, InfoAppender, DebugAppender
log4j.appender.InfoAppender=org.apache.log4j.RollingFileAppender
log4j.appender.InfoAppender.Threshold=INFO
log4j.appender.InfoAppender.File=/tmp/infoWARName.log
log4j.appender.InfoAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.InfoAppender.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.DebugAppender=org.apache.log4j.RollingFileAppender
log4j.appender.DebugAppender.Threshold=DEBUG
log4j.appender.DebugAppender.File=/tmp/debugWARName.log
log4j.appender.DebugAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.DebugAppender.layout.ConversionPattern=%d %p [%c] - %m%n
部署后,一切都像魅力一样工作,日志文件开始填充。几个小时后,同时,记录停止并且info.log
根本debug.log
没有更新。我们需要在服务器中重新部署 Portlet WAR 以重新开始记录。
有任何想法吗?
更新:
我开始怀疑这与我的 Logging JARS 有关。目前,这是我WEB-INF/lib
文件夹中的 JAR:
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.log4j-1.2.15.jar
com.springsource.slf4j.api-1.5.6.jar
slf4j-log4j12-1.5.6.jar
第二次更新:
在从赏金到结束的几个小时内,这就是 Log4j 在每个 Portlet 应用程序中的配置方式。这是web.xml
:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:miAppLog4j.properties</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
miAppLog4j.properties
文件位于 WAR 和 Portal 外部的文件夹中。我们通过WebSphere Portal 中的共享库使其在 Portlet Classpath 中可用。