0

我当前的项目使用 Log4j 进行日志输出,但是当它部署在 websphere 7 上时,似乎日志文件总是被服务器占用,因此 Log4J 无法关闭它并打开一个新文件。如果在 DEBUG 级别,当前日志文件可以扩展到 1.5 Gb。我浏览了一些在线教程,但没有得到可靠的解决方案。因此,我打开此线程以获取有关使 log4J 在 WS 7 上工作的任何意见或经验。

当前的 log4J 是 1.2.15,该项目是一个普通的 POJO/JSP 应用程序,没有其他容器(比如 Spring,我确实有另一个项目在 Spring/tomcat 上有相同的问题,将在另一个线程中打开)。这是 log4j.properties:

log4j.rootCategory=INFO, ROL
#
# Rolling File Appender
#
log4j.appender.ROL=org.apache.log4j.RollingFileAppender
log4j.appender.ROL.Encoding=UTF-8
log4j.appender.ROL.File=C\:\\Logs\\AppOut.log
log4j.appender.ROL.MaxFileSize=10000KB
log4j.appender.ROL.MaxBackupIndex=10
log4j.appender.ROL.layout=org.apache.log4j.PatternLayout
log4j.appender.ROL.layout.ConversionPattern=%d -- %p -- %c -- %m%n

但是这种配置不会使日志文件翻转。

更新:

似乎每次我在停止应用程序(而不是服务器)后尝试删除日志文件时,它总是说“文件被另一个应用程序打开”,它只指 Websphere。我可以保证没有其他应用程序正在打开日志文件。解除对它的锁定的唯一方法是停止application server.

提前感谢您的任何想法。

4

2 回答 2

2

我认为您已经看过这篇文章 - http://www.ibm.com/developerworks/websphere/techjournal/0802_supauth/0802_supauth.html

于 2012-11-15T01:52:09.040 回答
2

我们使用的是 7(顶部是门户服务器 6.1)。(我们使用 sl4j 库包装对记录器的调用,但我认为这与这里的问题无关)。除了我们没有设置根类别并且我们明确地将可加性设置为 false 之外,真的看不出有任何重大区别。

下面是我们配置的一部分(仅显示我们的一个附加程序),它工作得很好,并且按预期每 10MB 滚动一次日志。也许它是在 WAS 本身中配置的——我不是 WAS 管理员专家,也没有自己安装 WAS,但如果您还没有解决它,可以在周一询问我们的管理员。

log4j.logger.com.xxx.protection=TRACE, A1
log4j.additivity.com.xxx.protection=false

# other appenders excluded

log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.File=${LOG_ROOT}/applLogs/ui_and_business_logic.log
log4j.appender.A1.MaxFileSize=10MB
log4j.appender.A1.MaxBackupIndex=10
log4j.appender.A1.Append=true
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %p %t %c MSG: %m%n
于 2012-11-10T20:55:20.240 回答