```xml
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon-logging-logback</artifactId>
</dependency>
```

### 1、描述

日志扩展插件，基于 logback 适配插件。


| logback    | slf4j  | jdk           |   备注      | 对应的适配                            |
| -------- | ---- | -------- | ------- | ----------------------- |
| v1.3.x      | 2.x    | java8+     |  正在更新  | solon-logging-logback           |
| v1.4.x      | 2.x    | java11+     | （好像）不更新了  |                                             |
| v1.5.x      | 2.x    | java11+     | 正在更新  | solon-logging-logback-jakarta |



### 2、配置示例

日志等级的优先顺序：appender > logger > root。具体配置示例（描述可见：[《日志配置说明》](/article/746)）：

```yaml
solon.app:
  name: demoapp

# 以下为默认值，可以都不加，或者想改哪行加哪行(支持"云端配置服务"进行配置，支持写到"云端日志服务")
solon.logging.appender:
  console:
    level: TRACE
    enable: true #是否启用
  file:
    name: "logs/${solon.app.name}"
    level: INFO
    enable: true #是否启用
    extension: ".log"   #v2.2.18 后支持（例：.log, .log.gz, .log.zip）
    maxFileSize: "10 MB"
    maxHistory: "7" #单位：天
  cloud:
    level: INFO
    enable: true #是否启用
    
# 记录器级别的配置示例
solon.logging.logger:
  "root":  #默认记录器配置
    level: TRACE
  "com.zaxxer.hikari":
    level: WARN    
```

如果需要指定 file 的 rolling 路径：

```yaml
solon.logging.appender:
  file:
    name: "logs/${solon.app.name}"
    rolling: "logs/${solon.app.name}_%d{yyyy-MM-dd}_%i.log"
```

如果想用 Spring boot 怀旧风格的 pattern 配置：
```yaml
solon.app:
  name: demoapp

solon.logging.appender:
  console:
    pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %magenta(${PID:-}) --- %-15([%15.15thread]) %-56(%cyan(%-40.40logger{39}%L)) : %msg%n"
  file:
    pattern: "%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- %-15([%15.15thread]) %-56(%-40.40logger{39}%L) : %msg%n"
```


### 3、应用示例

```java
@SolonMain
public class DemoApp {
    public static void main(String[] args) {
        Solon.start(DemoApp.class, args);
    }
}

@Controller
public class DemoController{
    static Logger log = LoggerFactory.getLogger(DemoController.class);
    
    @Mapping("/hello")
    public void hello(String name){
        //默认的打印格式，支持 MDC 显示
        MDC.put("user", name);
        
        log.info("hello world!");
    }
}
```

### 4、Xml 高度定制（比如，不同业务的日志写到不同文件里）


如果想高度定制，可以自定义 xml 配置（支持环境切换），放到资源根目录下。

```yaml
#默认配置，可以从插件里复制 logback-def.xml 进行修改（-solon 可以支持 solon 特性）
logback-solon.xml

#环镜配置
logback-solon-{env}.xml 
```

也可以用 `logback.xml` 配置文件。但其它配置都会失效，也没有环境切换功能


复制参考：[https://gitee.com/opensolon/solon/blob/main/solon-projects/solon-logging/solon-logging-logback/src/main/resources/META-INF/solon_def/logback-def.xml](https://gitee.com/opensolon/solon/blob/main/solon-projects/solon-logging/solon-logging-logback/src/main/resources/META-INF/solon_def/logback-def.xml)

