本案需要引入已适配的 slf4j 日志框架（`solon.logging.simple `或 `logback-solon-plugin` 或 `log4j-solon-plugin`）。


### 1、自定义添加器入门


* 实现自定义添加器

实现一个简单的日志添加器，并把将日志以json格式打印出来：

```java
import org.noear.solon.logging.event.AppenderBase;

//添加器实现类
public class JsonAppender extends AppenderBase {
    @Override
    public void append(LogEvent logEvent) {
        System.out.println("[Json] " + ONode.stringify(logEvent));
    }
}
```

* 增加配置

增加一个自定义的添加器（名字：json；等级：INFO；类名：demo.log.JsonAppender ）

```yml
solon.logging.appender:
  json: 
    level: INFO
    class: demo.log.JsonAppender 
```


### 2、高阶自定义添加器，将日志流转批并持久化


* 实现用于持久化的添加器

框架提供了高性能的流转批的添加器 “PersistentAppenderBase”，扩展一下实现持久化处理即可：

```java
//持久化添加器（实现了流转批的效果）//提供高性能支持
public class PersistentAppender extends PersistentAppenderBase 
    LogService logService;
    
    public PersistentAppender(){
        //从容器里，手动获取日志服务
        Solon.context().getBeanAsync(LogService.class, bean->{
            logService = bean;
        });
    }

    @Override
    public void onEvents(List<LogEvent> list) {
        //批量插到数据库去（或者批量提交到远程接口）
        if(logService != null){
            logService.insertList(list);
        }
    }
}
```

* 添加配置

```yml
solon.logging.appender:
  persistent: 
    level: TRACE
    class: demo2010.dso.PersistentAppender
```

* 具体代码，参考这个示例：

[https://gitee.com/noear/solon-examples/tree/main/2.Solon_Advanced/demo2010-logging_batch](https://gitee.com/noear/solon-examples/tree/main/2.Solon_Advanced/demo2010-logging_batch)





