我们正在使用JUL日志记录转换为SLF4J日志记录。但是我们的一些JAR使用JUL日志记录。使用SLF4JBridgeHandler时,我们注意到我们希望显示的一些消息无法按预期工作。
特别是当我们在SL4J中为JAR打开DEBUG时,FINER的消息编写器没有显示。
以下是SLF4JBridgeHandler.java的文档:
FINEST -> TRACE
FINER -> **DEBUG**
FINE -> DEBUG
INFO -> INFO
WARNING -> WARN
SEVERE -> ERROR
答案 0 :(得分:0)
SLF4JBridgeHandler上的文档错误。
以下是SLF4JBridgeHandler.java的附加代码:
private static final int TRACE_LEVEL_THRESHOLD = Level.FINEST.intValue();
private static final int DEBUG_LEVEL_THRESHOLD = Level.FINE.intValue();
private static final int INFO_LEVEL_THRESHOLD = Level.INFO.intValue();
private static final int WARN_LEVEL_THRESHOLD = Level.WARNING.intValue();
文档应该如下所示:
FINEST -> TRACE
FINER -> **TRACE**
FINE -> DEBUG
INFO -> INFO
WARNING -> WARN
SEVERE -> ERROR
以下是SLF4JBridgeHandler.java的附加代码:
protected void callPlainSLF4JLogger(Logger slf4jLogger, LogRecord record) {
String i18nMessage = getMessageI18N(record);
int julLevelValue = record.getLevel().intValue();
if (julLevelValue <= TRACE_LEVEL_THRESHOLD) {
slf4jLogger.trace(i18nMessage, record.getThrown());
} else if (julLevelValue <= DEBUG_LEVEL_THRESHOLD) {
slf4jLogger.debug(i18nMessage, record.getThrown());
} else if (julLevelValue <= INFO_LEVEL_THRESHOLD) {
slf4jLogger.info(i18nMessage, record.getThrown());
} else if (julLevelValue <= WARN_LEVEL_THRESHOLD) {
slf4jLogger.warn(i18nMessage, record.getThrown());
} else {
slf4jLogger.error(i18nMessage, record.getThrown());
}
}