Solon2 自定义 slf4j 日志添加器(比如存到数据库)

本案需要引入已适配的 slf4j 日志框架(solon.logging.simple logback-solon-pluginlog4j-solon-plugin)。

1、自定义添加器入门

  • 实现自定义添加器

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

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

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

增加一个自定义的添加器(名字:json;等级:INFO;类名:demo.log.JsonAppender )

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

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

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

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

//持久化添加器(实现了流转批的效果)//提供高性能支持
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);
        }
    }
}
  • 添加配置
solon.logging.appender:
  persistent: 
    level: TRACE
    class: demo2010.dso.PersistentAppender
  • 具体代码,参考这个示例:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值