log4j2 level继承代码
时间: 2023-08-27 11:06:50 浏览: 45
下面是一个示例的log4j2配置文件,其中展示了loggers和appenders的level继承:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<!-- root logger -->
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
<!-- logger with level inherit from root -->
<Logger name="com.example" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<!-- logger with own level -->
<Logger name="com.example.special" level="debug" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<!-- logger with level inherit from nearest parent -->
<Logger name="com.example.special.sub" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
</Loggers>
</Configuration>
```
在这个配置文件中,有四个logger被定义:
- Root logger:根logger,所有logger的祖先。在这里设置了level="error",表示只有error级别及以上的日志会被记录。
- com.example logger:一个子logger,它从Root logger继承了level="error"。因为additivity="false",所以它不会将日志消息传递给它的祖先logger。它将使用Root logger定义的Console appender来输出日志。
- com.example.special logger:另一个子logger,它有自己的level="debug"。因为additivity="false",所以它不会将日志消息传递给它的祖先logger。它将使用Root logger定义的Console appender来输出日志。
- com.example.special.sub logger:com.example.special的子logger,它从com.example.special继承了level="debug"。因为additivity="false",所以它不会将日志消息传递给它的祖先logger。它将使用Root logger定义的Console appender来输出日志。
因此,在这个配置文件中,只有来自com.example.special和com.example.special.sub logger的debug级别及以上的日志消息会被记录。来自com.example logger的日志消息将被限制在error级别及以上。