一、首先明确几个类
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、结果
已经进入:“阴” 监听器
已经进入:“阳” 监听器
遍历到了:阴
遍历到了:阳
浙公网安备 33010602011771号