一、首先明确几个类

1、ch.qos.logback.core.status.Status接口:可以把它理解对“一句话”的定义、如果要对这句话进行一个抽象的话,那么就应该有这么几个要素:

这句话是在哪里说的(origin),什么时候说的(date),分量重不重(level)、内容是什么(message),这句话能引申出几个意思(childrenList<status>),另外如果是在犯错的情况下说的的浑话,要把这个犯错类型记录下来(throwable)。具体的接口看图。

 

2、ch.qos.logback.core.status.StatusListener接口:顾名思义就监听status对象的状态的,例如:status的增加、删除等。当然这里只监听status的增加,也就是当status添加的时候就会触发ch.qos.logback.core.status.StatusListener实现类的addStatusEvent方法。具体的接口看图

 

 

 

3、ch.qos.logback.core.status.StatusManager接口:一般看到manager结尾的类就是管理某一个对象、这样的命名规范随处可见不用多说。通过statusManager名字不难猜出这个接口就是管理status对象的。因为status对象是在StatusManager接口维护,而status的增加要触发监听事件,所以StatusManager附带着维护StatusListener对象的义务。具体的接口看图

 

 

 4、小结:到这里ch.qos.logback.core.status包下的类基本就讲完了,最后给大家一个直观的例子,加深基础知识的理解。

      课外研读:ch.qos.logback.core.helpers.CyclicBuffer类的作用,欢迎评论区留言交流

a、实现ch.qos.logback.core.status.StatusListener监听类

package com.logback.status;

import ch.qos.logback.core.status.Status;
import ch.qos.logback.core.status.StatusListener;

public class MyStatusListener implements StatusListener {

    @Override
    public void addStatusEvent(Status status) {
        System.out.println("已经进入:“"+status.getMessage()+"” 监听器");
    }

}

b、main测试类

package com.logback.status;

import ch.qos.logback.core.BasicStatusManager;
import ch.qos.logback.core.status.InfoStatus;
import ch.qos.logback.core.status.Status;

public class StatusMain {

    public static void main(String[] args) {
        MyStatusListener myStatusListener=new MyStatusListener();//status监听
        Status yingStatus=new InfoStatus("阴",null);
        Status yangStatus=new InfoStatus("阳",null);
        BasicStatusManager basicStatusManager=new BasicStatusManager();
        basicStatusManager.add(myStatusListener);//先添加监听
        basicStatusManager.add(yingStatus);//添加一次status调用一次监听
        basicStatusManager.add(yangStatus);//添加一次status调用一次监听
        for(Status status :basicStatusManager.getCopyOfStatusList()) {
            System.out.println("遍历到了:"+status.getMessage());
        };
    }

}

c、结果

已经进入:“阴” 监听器
已经进入:“阳” 监听器
遍历到了:阴
遍历到了:阳