摘要:简介依赖包解析并没有实现相应的接口所以加了一层桥接层包里面的内容来实现对的调用里面的代码很简单只有个类关键的两个类是和对应的方法源码实现了的接口调用方法获取实现了的接口并且实际代理了类所以对的所有方法调用最终调用的都是对应的方法小
SLF4J&&Log4j 简介
依赖jar包:slf4j-api-x.x.x.jar,log4j.jar,slf4j-log4j12.jar
解析log4j并没有实现slf4j相应的接口,所以加了一层桥接层(slf4j-log4j12.jar包里面的内容)来实现slf4j对log4j的调用
slf4j-log4j12.jar里面的代码很简单
只有5个类,关键的两个类是Log4jLoggerFactory和Log4jLoggerAdapter,对应Log4jLoggerFactory的getLogger方法源码:
</>复制代码
public Logger getLogger(String name) {
Logger slf4jLogger = loggerMap.get(name);
if (slf4jLogger != null) {
return slf4jLogger;
} else {
org.apache.log4j.Logger log4jLogger;
if(name.equalsIgnoreCase(Logger.ROOT_LOGGER_NAME))
log4jLogger = LogManager.getRootLogger();
else
log4jLogger = LogManager.getLogger(name);
Logger newInstance = new Log4jLoggerAdapter(log4jLogger);
Logger oldInstance = loggerMap.putIfAbsent(name, newInstance);
return oldInstance == null ? newInstance : oldInstance;
}
}
Log4jLoggerFactory实现了slf4j的ILoggerFactory接口,调用getLogger方法获取Logger
Log4jLoggerAdapter实现了slf4j的Logger接口,并且实际代理了org.apache.log4j.Logger类,所以对Log4jLoggerAdapter的所有方法调用,最终调用的都是org.apache.log4j.Logger对应的方法
小结log4j是通过slf4j-log4j12.jar桥接包来完美适配slf4j使用
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67017.html
摘要:的继承关系使用做日志输出时,首先我们需要一个创建一个对象。再设计多级别的日志系统时,尤其要注意这点。当然,这样做其实是有悖于的本意的。是什么是一个程序内全局唯一的,所有对象的祖先。因此,直接修改是危险的。 0x00 python logging的继承关系 使用python做日志输出时,首先我们需要一个创建一个Logger对象:import logging; logger = log...
阅读 1524·2021-11-25 09:43
阅读 4064·2021-11-15 11:37
阅读 3199·2021-08-17 10:13
阅读 3506·2019-08-30 14:16
阅读 3538·2019-08-26 18:37
阅读 2495·2019-08-26 11:56
阅读 1134·2019-08-26 10:42
阅读 613·2019-08-26 10:39
极致性价比!云服务器续费无忧!
Tesla A100/A800、Tesla V100S等多种GPU云主机特惠2折起,不限台数,续费同价。
NVIDIA RTX 40系,高性价比推理显卡,满足AI应用场景需要。
乌兰察布+上海青浦,满足东推西训AI场景需要