Java SLF4J 层次结构执行
Java SLF4J hierachy execution
有什么方法可以从特定的子级执行层次结构中的每个日志?
例如:
-Parent
-Son
-Son2
- 执行Son.log("message")会执行Son log和Parent log。
- 执行 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 层次结构不能(也不应该)以您想要的方式使用。
基本上,对于每个记录器,如果您不定义任何设置,将从父项复制设置。在您的层次结构中,parent
的日志记录级别设置为 DEFAULT
,并且没有为 parent.son
定义任何内容。因此 parent.son
的日志记录级别也将是 DEBUG
。所以级别高于或等于 DEBUG
的所有日志将被记录为 parent.son
。如果您将儿子的日志级别设置为 TRACE
,那么它将优先于父级的 DEBUG 级别。
有什么方法可以从特定的子级执行层次结构中的每个日志?
例如:
-Parent
-Son
-Son2
- 执行Son.log("message")会执行Son log和Parent log。
- 执行 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 层次结构不能(也不应该)以您想要的方式使用。
基本上,对于每个记录器,如果您不定义任何设置,将从父项复制设置。在您的层次结构中,parent
的日志记录级别设置为 DEFAULT
,并且没有为 parent.son
定义任何内容。因此 parent.son
的日志记录级别也将是 DEBUG
。所以级别高于或等于 DEBUG
的所有日志将被记录为 parent.son
。如果您将儿子的日志级别设置为 TRACE
,那么它将优先于父级的 DEBUG 级别。