本文主要研究一下logback的MarkerFilter
ch/qos/logback/classic/turbo/MarkerFilter.java
MarkerFilter定义了markerToMatch属性,其decide方法对于传入的marker为null返回onMismatch,对于包含markerToMatch的返回onMatch,否则返回onMismatch
org/slf4j/MarkerFactory.java
MarkerFactory通过static方法来初始化MARKER_FACTORY,若SLF4JServiceProvider不为null则取provider.getMarkerFactory(),否则取BasicMarkerFactory
org/slf4j/helpers/BasicMarkerFactory.java
BasicMarkerFactory通过ConcurrentMap来存储string与Marker的映射,创建的是BasicMarker
org/slf4j/Marker.java
Marker接口定义了getName、add、remove、hasReferences、iterator、contains、equals、hashCode方法
org/slf4j/helpers/BasicMarker.java
BasicMarker实现了Marker接口,它定义了一个CopyOnWriteArrayList类型的referenceList
logback提供了MarkerFilter来支持slf4j的Marker,可以通过MarkerFactory.getMarker获取marker,然后在logger中使用,而配置文件可以配置MarkerFilter,设置指定的marker的onMatch或者onMismatch行为。