情景
我在之前的文章有提到过这个NOP service provider, 这种provider什么都不做,把日志打到/dev/null, 那它是怎么实现的呢?
代码解析
NOPServiceProvider
我们可以看到这个类除去VERSION字段, 有三个member,这也就是日志的核心组件了
public class NOPServiceProvider implements SLF4JServiceProvider {
public static String REQUESTED_API_VERSION = "1.8.99"; // !final
//用于获取logger,处理config,是一个入口,log4j2的部分源码分析
//可参考[log4j2(三) 如何通过类名获取到logger呢?logger与loggerConfig是什么关系?-源码解析](https://blog.csdn.net/sweetyi/article/details/104653897)
private ILoggerFactory loggerFactory = new NOPLoggerFactory();
//给日志打标记时需要用到的,不知道使用场景的话,可以看看这篇文章
//[log4j2(一) MarkerFilter的应用场景及使用示例](https://blog.csdn.net/sweetyi/article/details/104547002)
private IMarkerFactory markerFactory = new BasicMarkerFactory();
//相当于是日志的context,常用的场景是往里边放个request id,用于标识没一个请求
private MDCAdapter mdcAdapter = new NOPMDCAdapter();
//...省略getter/setter方法
@Override
public void initialize() {