Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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 logger-几乎相同代码的不同输出_Java_Logging - Fatal编程技术网

了解java logger-几乎相同代码的不同输出

了解java logger-几乎相同代码的不同输出,java,logging,Java,Logging,第一段代码所做的工作与第二段几乎完全相同。但日志记录的层次传播是不同的。有人能解释一下为什么会这样吗。谢谢 Logger log1 = Logger.getLogger("Test1"); Logger log2 = Logger.getLogger("Test1.Test2"); Logger log3 = Logger.getLogger("Test1.Test2.Test3"); log2.setLevel(Level.WARNING);

第一段代码所做的工作与第二段几乎完全相同。但日志记录的层次传播是不同的。有人能解释一下为什么会这样吗。谢谢

Logger log1 = Logger.getLogger("Test1");
        Logger log2 = Logger.getLogger("Test1.Test2");
        Logger log3 = Logger.getLogger("Test1.Test2.Test3");
        log2.setLevel(Level.WARNING);
        log3.setLevel(Level.INFO);
        log2.addHandler(new ConsoleHandler());
        log3.addHandler(new ConsoleHandler());
        log1.log(Level.INFO, "Message By: {0}",log1.getName());
        log2.log(Level.INFO, "Message By: {0}",log2.getName());
        log3.log(Level.INFO, "Message By: {0}",log3.getName());

OUTPUT: Nov 27, 2014 8:32:51 PM Test main
INFO: Message By: Test1
Nov 27, 2014 8:32:51 PM Test main
INFO: Message By: Test1.Test2.Test3
Nov 27, 2014 8:32:51 PM Test main
INFO: Message By: Test1.Test2.Test3
Nov 27, 2014 8:32:51 PM Test main
INFO: Message By: Test1.Test2.Test3

最低的记录器信息消息不应传播到顶部,因为中间的消息设置为警告

这个假设是你困惑的根源。课程文档中描述了记录的组织。根据文件:

默认情况下,日志记录器也会递归地向上发布到其父处理程序


子记录器直接记录到父处理程序,而不是父记录器。因此,在本例中,父处理程序的级别是要播放的,而不是父记录器的级别。

您所关心的“差异”是什么?您的代码几乎不完全相同,并且您的输出与存在的差异相匹配。你的问题是什么?为什么这两种输出不同?从逻辑上讲,我也在做同样的事情。中间记录器级别设置为警告。三人都在提供信息。最低的记录器信息消息不应传播到顶部,因为中间的消息设置为警告。
Logger logger      = Logger.getLogger("d");
        Logger logger1     = Logger.getLogger("d.1");
        Logger logger1_2   = Logger.getLogger("d.1.2");
        logger1  .setLevel(Level.WARNING);
        logger1_2.setLevel(Level.INFO);
        logger     .info("msg:");
        logger1    .info("msg: 1");
        logger1_2  .info("msg: 1.2");
OUTPUT:
Nov 27, 2014 8:33:34 PM Test main
INFO: msg:
Nov 27, 2014 8:33:34 PM Test main
INFO: msg: 1.2