有什么方法可以执行特定儿子的层级中的每个日志?

例如:

-Parent
    -Son
       -Son2



执行Son.log(“ message”)将执行Son日志和Parent日志。
执行Son2.log(“ message”)将执行Son2,Son和父级日志。


那是代码:

public class HelloWorld {

   public static void main(String[] args) {

       Logger parent = LoggerFactory.getLogger("parent");
       ((ch.qos.logback.classic.Logger) parent).setLevel(Level.DEBUG);

       Logger son= LoggerFactory.getLogger("parent.son");
       son.debug("hello");
   }
}


输出:

14:15:25.180 [main] DEBUG logger.son- Hello world.

所需输出:

14:15:25.180 [main] DEBUG parent.son- Hello world.14:15:25.180 [main] DEBUG parent- Hello world.

谢谢。

最佳答案

那不是它的工作原理。 SLF4J Logger层次结构无法按您希望的方式使用(并且不应)。

基本上,对于每个记录器,如果您未定义任何设置,则将从父级复制设置。在您的层次结构中,DEFAULT的日志记录级别设置为parent,而parent.son则未定义任何内容。因此,parent.son的日志记录级别也将为DEBUG。因此,所有级别高于或等于DEBUG的日志都将记录为parent.son。如果将子级的日志级别设置为TRACE,则它将优先于父级的DEBUG级别。

10-08 00:05