Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不同的Java类中设置单独的日志级别?_Java_Java.util.logging_Log Level - Fatal编程技术网

如何在不同的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

(我是Java新手,我已经读过了。因为它不能回答我的问题,所以在这里)

我正在开发一个系统,它具有
私有静态最终记录器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