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

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

时间:2023-03-20 13:11:58浏览次数:51  
标签:solon 自定义 slf4j 添加 Solon2 logging 日志 public

本案需要引入已适配的 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

标签:solon,自定义,slf4j,添加,Solon2,logging,日志,public
From: https://www.cnblogs.com/noear/p/17235923.html

相关文章

  • 自定义ViewGroup 实现拖动跟快速滚动的效果
     之前做到个项目要类似listView或者GridView中的控件移动的效果(主屏上所有程序列表上的效果):1:子控件跟着手指移动2:快速拨动一下,根据拨动的速度......
  • Android自定义长按事件
    Android系统自带了长按事件,setOnLongClickListener即可监听。但是有时候,你不希望用系统的长按事件,比如当希望长按的时间更长一点的时候。这时候就需要......
  • Three.js自定义shader实现离相机越近越透明效果
    constcustomShader=newTHREE.ShaderMaterial({uniforms:{},defines:{nearDis:0.3},transparent:true,side:THREE.DoubleSide,vertexShader:......
  • Java stream sorted自定义排序规则实现多字段排序
      Stream提供了丰富的操作(中间操作和终端操作)集合元素的轮子,但Stream流操作不影响原始集合数据,执行结果是一个新的集合对象。在《Javastreamsorted使用Comparator进......
  • fastadmin 自定义build_toolbar按钮
    fastadmin自定义build_toolbar按钮何渊渊于2020-09-2311:13:31发布1930收藏4分类专栏:fastadmin文章文章标签:javascriptphp版权fastadmin同时被2个专栏收......
  • 自定义异常回滚@Transactional注解
    //重点关注的是@Transactional注解和TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()@Override@Transactional(rollbackFor=RuntimeExcep......
  • 【Android开发】用户界面设计-开发自定义的View
    效果图:Android中,所有的UI界面都是由View类和ViewGroup类及其子类组合而成的。View是所有UI组件的基类(父类),为ViewGroup类是容纳这些UI组件的容器,其本身也是View的子类。关......
  • Visual Studio自定义代码片段
    问题描述VisualStudio提供了CodeSnippetManager功能,这使得用户可以自定义代码片段。用户可以在CodeSnippetManager中创建自己的代码片段,并指定一个唯一的提示符。一......
  • 带你深入Java Log框架,彻底搞懂Log4J、Log4J2、LogBack,SLF4J
    最近系统被扫出来还在使用老旧的log4j,需要升级到最新的log4j。但是在升级的发现,Java相关的日志处理库有log4j,log4j2,slf4j和logback,初一看确实有点头大,那么区别是啥呢?......
  • 自定义指令
    Vue是一个流行的JavaScript框架,它允许开发人员构建动态的用户界面和单页应用程序。Vue的灵活性使其成为开发人员的首选框架之一,其中一个重要的原因是其能够自定义指令,以便......