SLF4J日志门面API与日志库实现包之间绑定方式的变迁

slf4j作为流行的日志门面,对常用的日志库API进行了抽象,应用层仅需要调用SLF4j的API就可以完成日志打印功能,而底层日志框架,可以灵活更换,可以用log4j也可以用logback或者其他自己喜欢或者工作环境要求的特定日志库。 slf4j的api是如何实现与底层日志库的绑定呢?api绑定解决不好,则会导致大量的类与功能实现进入api层面所在的模块,并且会导致拆分不彻底。 slf4j的绑定方式有两种,从1.0.X->1.7.X版本是采用的static-binding方式,以前我们经常会遇到的应用启动报错,说存在多个绑定类,然后选择了哪个绑定实现,就是这个应用的classpath中,引入了 …

Log4j2代码分布分析

以Log4j2的2.14.1版本为例,分析Log4j2的代码分布情况,看看这个主流的开源日志库,其主要精力花在了哪里?其代码分布合理性如何? 统计口径:统计Java代码文件文本行数,注释、空行、纯代码都算在内。 一、Log4j各模块代码占比 模块名 JAVA文本行 JAVA文本行占比 log4j-1.2-api 15449 5.45% log4j-api 41926 14.79% log4j-api-java9 687 0.24% log4j-appserver 448 0.16% log4j-cassandra 699 0.25% log4j-core 162398 57.28% log4j …