【发布时间】:2015-06-17 16:56:50
【问题描述】:
所以,我有一个主要使用 Apache Commons Logging 的遗留应用程序,但有些东西是使用 Log4J 完成的。就我而言,当用户将某些内容删除到特定文件时,我必须使用 Log4J 写入一些日志,文件的名称仅在运行时才知道,所以我所做的是在 log4j.xml 中有一个记录器:
<logger name="DELETE_LOGGER" additivity="false">
<level value="INFO" />
</logger>
在应用程序启动时加载的 servlet 中,我有:
RollingFileAppender appender = new RollingFileAppender(
new PatternLayout(PATTERN),
deleteFileName);
appender.setMaxBackupIndex(1);
appender.setMaxFileSize("1MB");
appender.setName("DELETE_APPENDER");
appender.setThreshold(Level.INFO);
appender.setAppend(true);
appender.activateOptions();
Logger logger = Logger.getLogger("DELETE_LOGGER");
logger.removeAllAppenders();
logger.addAppender(appender);
然后我有一个实用程序类:
Logger LOGGER = Logger.getLogger("DELETE_LOGGER");
LOGGER.info(message);
我在我的 Tomcat 上工作没有任何问题,在 Websphere 上创建了文件但没有记录任何内容。我终于发现 Websphere 上的记录器级别是 null 而不是 INFO。有谁知道为什么? log4j.xml 没问题,看不懂。
【问题讨论】:
-
WebSphere 中有一个设置,您可以在其中编辑日志详细级别。确保您的设置正确。
-
我查看了 Websphere 的“更改日志详细信息级别”,只发现了一个带有“*=info: fr.improve.struts.taglib.layout.sort.SortUtil=all: fr.improve .struts.*=all" 和一个没有我的记录器的列表,这看起来与 Log4J 无关。
-
@NyamiouTheGaleanthrope 我同意,更改 WebSphere 日志详细信息不太可能影响 log4j。不幸的是,我对 log4j 知之甚少,无法说明为什么没有观察到 log4j.xml 配置。在 log4j 代码中添加一些诊断逻辑以确定配置不起作用的原因可能是最简单的。
-
@Aramiti 这些设置适用于 WAS 使用的 Java Util Logging。它们与 log4j 无关。
标签: java logging log4j websphere