如何在不同的Java类中设置单独的日志级别?
(我是Java新手,我已经读过了。因为它不能回答我的问题,所以在这里) 我正在开发一个系统,它具有如何在不同的Java类中设置单独的日志级别?,java,java.util.logging,log-level,Java,Java.util.logging,Log Level,(我是Java新手,我已经读过了。因为它不能回答我的问题,所以在这里) 我正在开发一个系统,它具有私有静态最终记录器log=Logger.getLogger(XXX.class.getName())多个类中的属性(XXX为对应的类) 我将log.setLevel(level)用于不同的levels,但是所有log对象似乎都在相同的日志级别上工作。打印log本身似乎表明单个log对象实际上是相同的。我不明白为什么 调试输出如下所示: [CONFIG ]...Parser init: java.ut
私有静态最终记录器log=Logger.getLogger(XXX.class.getName())代码>多个类中的属性(XXX
为对应的类)
我将log.setLevel(level)
用于不同的level
s,但是所有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
和Tokenizer
正在调用Logger.getLogger(XXX.class.getName())代码>具有相同的名称XXX
class。修改您的代码示例以打印记录器的名称
调试输出如下
这就是a帮助我的地方。级别用于限定消息,级别用于筛选消息。如果您至少没有包含生成调试输出的代码,则很难判断列出的每个级别的含义 您似乎混淆了记录器的过滤级别和消息的日志级别
每个记录器都有一个日志级别,充当消息的过滤器;
以低于记录器过滤级别的级别记录的消息将被忽略
下面是一个示例(不是实际代码):
上述“代码”将在日志文件中生成以下消息:
fine grained log message
info level message
second fine message
请注意,“最精细的日志记录级别”消息不会出现在日志中,因为finest
级别低于FINE
,因此会被日志记录器过滤掉。包括示例程序和示例logging.properties。如果不能够阅读产生它的源代码,就很难理解上面的输出。我希望尽可能地精简。这个系统大约由20个类组成,我想它不会让问题变得更清楚。也许相反:给出一个简单的例子,它符合我的要求。在尝试提出更多问题之前,请先阅读。如果你阅读了这个问题,你会看到XXX
是相应类的占位符,并且(我猜)你可以从输出中看到(比如“…Parser init…”和“…Tokenizer init…”)日志记录者确实使用了不同的名称。事实上,您的做法是正确的:由于无法获取当前类的名称,我犯了一个复制粘贴错误,实际上两次使用了一个类名。不幸的是,所有日志消息仍然输出了正确的类,因此直到今天,错误仍然没有被发现。我理解你的例子,但你的例子并不适用于我的问题:我打算使用不同的记录器对象,但似乎我只得到一个记录器对象(从@6bc7c054
输出中可以明显看出)。对处理程序使用Level.ALL
,并不能解决我描述的问题。
fine grained log message
info level message
second fine message