15

我使用 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 日志记录中不可用。谁能解释一下在这种情况下我们如何获得调试级别的日志记录。对于这种情况,我们是否需要做任何额外的配置?

更新

这是我的属性文件配置

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

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

4

2 回答 2

8

我在下面的帖子的帮助下解决了这个问题。

使用 jdk 进行 slf4j 日志记录 – 如何启用调试?

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

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

.level= 精细

于 2013-04-04T12:54:15.400 回答
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

于 2015-06-07T19:48:53.423 回答