您可以“劫持”受保护的方法Logger#forcedLog()
以始终打印到日志。
您必须将劫持者类与Logger
.
package org.apache.log4j;
/**
* @author maba, 2012-08-23
*/
public class LogOverride {
public static void print(Logger logger, String message) {
logger.forcedLog(logger.getName(), Priority.INFO, message, null);
}
}
并从您的调用代码
log.setLevel(Level.OFF); // Make sure logging is turned off
log.info("Normal logging"); // Will not be seen anywhere
LogOverride.print(log, "Overriding logger"); // Will still make it to your appender
这就是 log4j 常见问题解答关于自定义级别的内容:
如何添加自定义关卡?
这是可能的,但很少合适。该请求通常针对名为“审计”之类的级别,该级别显然不适合进程“跟踪”、“调试”、“信息”、“警告”、“错误”和“致命”。在这种情况下,对级别的请求实际上是对指定不同受众的机制的请求。适当的机制是为“审计”相关消息使用不同的记录器名称(或树)。
因此,如果您想接受该建议,那么您应该查看SJuan76的答案。