我们日常接触到的日志系统有很多种 log4j JUL jdk自带 logback等 我们可以直接根据对象的日志API进行使用。但是考虑到API各不相同 所以出现了JCL Jakarta Commons Logging 、slf4j等日志API框架。日志API框架只是统一的API 其底层的具体的日志记录工作还是由log4j、JUL、logback等承担。
如何选择和搭配日志系统目前来说 新应用使用logback是首选 一些老系统中很可能使用的是log4j等。目前slf4j对logback和log4j都支持 对JCL也提供了桥接方法 将JCL的api转化slf4j的API。贴一张Webx中的图足以说明一切
组装日志系统由于存在JCL,SLF4j两大日志框架 logback、log4j、JUL日志系统所以理论上有这么多种日志系统的搭配。
JUL其中slf4j slf4j-log4j12 log4j、slf4j logback是主流 推荐使用。
常见的日志包以及辅助包功能介绍JCL(commons-logging)系列commons-logging apache logging抽象日志工具 一般搭配log4j1/2使用当依赖了一些三方库时 可能会出现多种日志共存的问题 无法保证每种日志抽象库都使用一样的实现类 此时需要制定固定的日志库。主流的日志库都提供了扩展方式
JUL(java.util.logging)通过LogManager.getLogManager().getLogger( ).addHandler()方法 可以添加日志具体实现LogManager.getLogManager().getLogger( ).addHandler(new SLF4JBridgeHandler());继承java.util.logging.Handler 类 在实现中使用具体的Logger库即可实现例子 jul-to-slf4j https://www.slf4j.org/api/org...
JCL(org.apache.commons.logging)j通过指定环境变量LogFactory,org.apache.commons.logging.LogFactorySystem.setProperty( org.apache.commons.logging.LogFactory , com.answern.claimv2.framework.log.LogFactoryImplAdapter 继承org.apache.commons.logging.LogFactory类 实现自己的LogFactory即可
还可以通过jcl提供的spi机制 实现自己的org.apache.commons.logging.LogFactory创建META-INF/services/org.apache.commons.logging.LogFactory文件 文件内定义LogFactory的完整类名即可。
还有另外一种暴力的方式 不引入commons-logging包 而是创建jcl的一些同名类 在实现中直接使用具体的日志库。jcl-over-slf4j https://mvnrepository.com/art... 就是一个典型的例子.相同功能的还有spring-jcl https://mvnrepository.com/art...
log4jlog4j提供了java对原生spi机制的支持建立MEATA-INF/services/org.apache.logging.log4j.spi.Provider文件继承org.apache.logging.log4j.spi.Provider类 实现自己的LoggerContextFactory即可实现例子 log4j-to-slf4j https://logging.apache.org/lo...
SLFJ4Jslf4j官方介绍了使用方式 通过引入不同的jar包来使用具体的日志库。由于slf4j拆分做的很好 当多种日志库共存时 若不引入slf4j-xxx.jar时 不会加载相应的日志库。所以若日志冲突时 使用slf4j的三方库只需要include/exclude相应的实现库即可。
日志系统适配大全附上一张可能是全网最全的日志框架适配图
编写自己的框架/类库时该如何选择日志库由于日志库多种多样 如果盲目引入jcl或者slf4j时 可能会对具体使用的项目造成影响。所以最合适的方式是内嵌一套日志抽象 内部动态的去选择加载哪个日志库。主流的成熟框架都会这么做 尽可能的保持兼容性。
例如spring/mybatis/freemarker/dubbo这些框架 都有一套内嵌的日志抽象 打印日志时只需要调用内嵌的日志即可做到全兼容。
编辑:张楠 来源:阿里云研究中心 阿里云研究 阿里巴巴CEO张勇提出,数字化是巨...
一、前言 拷贝这个词想必大家都很熟悉,在工作中经常需要拷贝一份文件作为副本。...
9月10日,在腾讯全球数字生态大会上,腾讯云智能制造首次披露三大战略布局,同时...
国务院办公厅关于以新业态新模式引领新型消费加快发展的意见 国办发〔2020〕32号...
在攻读本科期间,我遇到了软件测试一词,我发现它很有趣,并开始寻找各种资源来...
本文转载自公众号读芯术(ID:AI_Discovery)。 就像苹果砸在牛顿头上改变了人们理...
原文 | https://www.pulumi.com/blog/is_serverless_the_future_part_1/ 作者 | ...
什么是服务器合租 对于中小企业来讲,在网站建设前期选择 虚拟主机租用 ,费用较...
今年8月底,入驻阿里动物园一周年的考拉海购首次宣布战略升级,在现有的跨境业务基...
2021年2月10日,微软官方发布补丁,修复了包含TCP/IP远程执行代码漏洞(CVE-2021...