gpt4 book ai didi

Java SLF4J 层次结构执行

转载 作者:行者123 更新时间:2023-12-02 13:34:33 26 4
gpt4 key购买 nike

有什么方法可以执行来自特定儿子的层次结构中的每个日志吗?

例如:

-Parent
-Son
-Son2
  1. 执行 Son.log("message") 将执行 Son 日志和 Parent 日志。
  2. 执行 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]调试logger.son-Hello world。

期望的输出:

14:15:25.180 [main]调试parent.son-世界你好。
14:15:25.180 [main] 调试父级 - Hello world。

谢谢。

最佳答案

事情不是这样的。 SLF4J Logger 层次结构不能(也不应该)按照您想要的方式使用。

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

关于Java SLF4J 层次结构执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43068845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com