SFL4J和JDK日志记录之间的不同日志记录级别

时间:2013-04-04 10:08:58

标签: logging slf4j java.util.logging

我使用JDK日志记录作为日志框架,将SLF4J作为简单的外观。 当我记录不同级别的日志时,我有一些疑问。

SLF4J具有以下日志级别

trace (the least serious)<br>
debug<br>
info<br>
warn<br>
error<br>
fatal (the most serious)<br>

JDK日志记录具有以下日志级别

SEVERE (highest value)<br>
WARNING<br>
INFO<br>
CONFIG<br>
FINE<br>
FINER<br>
FINEST (lowest value)<br>

如果我想将日志级别设置为DEBUG,则该级别在JDK日志记录中不可用。 任何人都可以解释一下我们如何在这种情况下获得DEBUG级别的日志记录。我们是否需要针对这种情况进行任何其他配置?

更新

这是我的属性文件配置

handlers = com.amc.logging.handlers.DebugLogHandler

com.amc.logging.handlers.DebugLogHandler.pattern=c:/logs/debug_log.log
com.amc.logging.handlers.DebugLogHandler.level=FINE
com.amc.logging.handlers.DebugLogHandler.formatter=java.util.logging.SimpleFormatter
com.amc.logging.handlers.DebugLogHandler.append=true

请让我知道我哪里出错了。

2 个答案:

答案 0 :(得分:8)

我已经在轰鸣声的帮助下解决了这个问题。

slf4j logging with jdk – how to enable debug?

对于SLF4J中的DEBUG级别日志记录,我们必须在java.util.logging中映射FINE级别。

我们必须将默认日志记录级别设置为FINE或更低级别的FINE。 这可以通过将波纹管线放在日志记录配置文件中来实现。

.level = FINE

答案 1 :(得分:0)

您遇到的另一个问题是,虽然您已定义了处理程序,但尚未将其分配给任何记录程序。

要将其分配给根记录器,请使用

.handlers=com.amc.logging.handlers.DebugLogHandler

要将其分配给应用程序中的记录器,请定义记录器

com.company.application.package.level=FINE

并将处理程序分配给它:com.company.application.package.handlers=com.amc.logging.handlers.DebugLogHandler

另外,com.amc.logging.handlers.DebugLogHandler是你自己定义的一个类吗?它在你的类路径中吗?因为否则我认为java.util.logging(JUL)不会识别它。

尝试使用JUL附带的处理程序之一:

handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler

使用您想要的级别,日志位置和格式配置它们。

以下是logging.properties文件示例:https://tomcat.apache.org/tomcat-6.0-doc/logging.html#Using_java.util.logging_(default)

它使用来自apache的juli实现的处理程序,但只是替换JUL中的类:https://docs.oracle.com/javase/7/docs/api/java/util/logging/package-summary.html