所以,我有一个主要使用 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 没问题,我不明白。
最佳答案
我也遇到了类似的问题。 尝试在记录器名称中省略下划线('_')。 尝试使用“DELETELOGGER”而不是“DELETE_LOGGER”。
关于java - Websphere 上的 Log4j LEVEL NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30897825/