如何在不同的 Java 类 中设置单独的日志级别?
How can I set individual log levels in different Java classes?
(我是 Java 的新手,我已经阅读了 java.util.logging: how to set level by logger package (or prefix)?。因为它无法回答我的问题,就在这里)
我正在开发一个系统,该系统在多个 class 中具有 private static final Logger log = Logger.getLogger(XXX.class.getName());
属性(XXX
是相应的 class)。
我将 log.setLevel(level)
与不同的 level
一起使用,但所有 log
对象似乎都在 相同的 日志级别工作。打印 log
本身,似乎表明各个 log
对象实际上是相同的。我不明白为什么。
调试输出是这样的:
[CONFIG ]...Parser init: java.util.logging.Logger@6bc7c054 logging level FINE
[CONFIG ]...Tokenizer init: java.util.logging.Logger@6bc7c054 logging level CONFIG
而且 Parser
class 级别的日志仍然在 CONFIG
...
Printing the log itself, seems to indicate that the individual log objects are actually the same. I don't understand why.
Parser
和 Tokenizer
正在调用 Logger.getLogger(XXX.class.getName());
同名 XXX
class。修改您的代码示例以打印记录器的 name。
Debug output is like this
这是 Minimal, Complete, and Verifiable example 帮助我的地方。级别用于限定消息,级别用于过滤消息。如果您至少不包括产生调试输出的代码,则很难说出列出的每个级别的含义。
您似乎混淆了记录器的过滤级别和消息的记录级别。
每个记录器都有一个记录级别,作为消息的过滤器;
以低于记录器过滤级别的级别记录的消息将被忽略。
这是一个示例(不是实际代码):
Logger myLogger = Logger.getLogger("somename");
myLogger.setLevel(FINE);
myLogger.fine("fine grained log message");
myLogger.finest("finest level of logging");
myLogger.info("info level message");
myLogger.fine("second fine message");
上面的 "code" 将在日志文件中产生以下消息:
fine grained log message
info level message
second fine message
注意消息"finest level of logging"不会出现在日志中,因为FINEST
级别低于FINE
,因此被记录器过滤掉。
(我是 Java 的新手,我已经阅读了 java.util.logging: how to set level by logger package (or prefix)?。因为它无法回答我的问题,就在这里)
我正在开发一个系统,该系统在多个 class 中具有 private static final Logger log = Logger.getLogger(XXX.class.getName());
属性(XXX
是相应的 class)。
我将 log.setLevel(level)
与不同的 level
一起使用,但所有 log
对象似乎都在 相同的 日志级别工作。打印 log
本身,似乎表明各个 log
对象实际上是相同的。我不明白为什么。
调试输出是这样的:
[CONFIG ]...Parser init: java.util.logging.Logger@6bc7c054 logging level FINE
[CONFIG ]...Tokenizer init: java.util.logging.Logger@6bc7c054 logging level CONFIG
而且 Parser
class 级别的日志仍然在 CONFIG
...
Printing the log itself, seems to indicate that the individual log objects are actually the same. I don't understand why.
Parser
和 Tokenizer
正在调用 Logger.getLogger(XXX.class.getName());
同名 XXX
class。修改您的代码示例以打印记录器的 name。
Debug output is like this
这是 Minimal, Complete, and Verifiable example 帮助我的地方。级别用于限定消息,级别用于过滤消息。如果您至少不包括产生调试输出的代码,则很难说出列出的每个级别的含义。
您似乎混淆了记录器的过滤级别和消息的记录级别。
每个记录器都有一个记录级别,作为消息的过滤器; 以低于记录器过滤级别的级别记录的消息将被忽略。
这是一个示例(不是实际代码):
Logger myLogger = Logger.getLogger("somename");
myLogger.setLevel(FINE);
myLogger.fine("fine grained log message");
myLogger.finest("finest level of logging");
myLogger.info("info level message");
myLogger.fine("second fine message");
上面的 "code" 将在日志文件中产生以下消息:
fine grained log message
info level message
second fine message
注意消息"finest level of logging"不会出现在日志中,因为FINEST
级别低于FINE
,因此被记录器过滤掉。