配置logback文档

This commit is contained in:
asahi
2024-08-05 12:53:54 +08:00
parent fa251a7910
commit 080746df22

View File

@@ -108,6 +108,9 @@ logger.debug("The entry is {}.", entry);
2. 如果1步骤失败会尝试在classpath中寻找`logback-test.xml` 2. 如果1步骤失败会尝试在classpath中寻找`logback-test.xml`
3. 如果2步骤失败会尝试在classpath中寻找`logback.xml` 3. 如果2步骤失败会尝试在classpath中寻找`logback.xml`
> #### 通过命令行System Properties设置logback配置文件位置
> 可以通过向命令行传递`-Dlogback.configurationFile=/path/to/config.xml`来设置logback配置文件的位置
### 通过xml形式配置logback ### 通过xml形式配置logback
```xml ```xml
<configuration> <configuration>
@@ -125,3 +128,64 @@ logger.debug("The entry is {}.", entry);
</root> </root>
</configuration> </configuration>
``` ```
### 自动加载配置文件更新
logback支持对配置文件的变动进行扫描并且对扫描到的变动进行自动配置。为了令logback支持配置自动更新需要为`configuration`元素配置scan属性示例如下所示
```xml
<configuration scan="true">
...
</configuration>
```
在开启配置自动更新时,默认会每间隔`1 minute`就扫描配置变动。可以通过`scanPeriod`属性自定义扫描周期,周期单位可以是`milliseconds, seconds, minutes, hours`。示例如下所示:
```xml
<configuration scan="true" scanPeriod="30 seconds" >
...
</configuration>
```
> 如果在没有为scanPerod属性值指定单位时默认单位为ms
### xml配置文件语法
一个基础的xml配置文件可以包含如下结构
1. 一个`<configuration>`元素
1. 0或多个`<appender>`元素
2. 0或多个`<logger>`元素
3. 最多一个`<root>`元素
#### `<logger>`
`<logger>`元素用于配置logger其接收一个必填的`name`属性,一个可选的`level`属性,一个可选的`additivity`属性。
- `additivity`属性的值可以为true或者false。
- `level`属性的值可以为`TRACE, DEBUG, INFO, WARN, ERROR, ALL, OFF`,是大小写不敏感的。
- 如果想要从上级继承level可以将level属性的值设置为`INHERITED`或是`NULL`
`logger`元素中可以包含0个或多个`<appender-ref>`元素这样每个引用的appender都会被加入到logger中。
#### `<root>`
`root`元素用于配置root logger其只支持一个属性`level`。由于root元素已经被命名为`ROOT`,故而也不允许指定`name`属性。
`<root>`元素的`level`属性只能被赋值为`TRACE, DEBUG, INFO, WARN, ERROR, ALL, OFF`,不能被赋值为`INHERITED`或是`NULL`.
和logger元素一样root元素中也能包含0个或多个`<appender-ref>`元素。
```xml
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%kvp- %msg%n</pattern>
</encoder>
</appender>
<logger name="chapters.configuration" level="INFO"/>
<!-- Strictly speaking, the level attribute is not necessary since -->
<!-- the level of the root level is set to DEBUG by default. -->
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</configuration>
```