平时我们引用日志包打印日志时发现和我们预料中的不一致,最常见的就是明明配置了但确不打印日志,所以我简单总结了下java的日志体系.
一.我们日前常用的日志有log4j,log4j2,logback,jul,来协助我们打印日志。

二.
jcl,slf4j为对应的门面,我理解门面其实就相当于java多态,它的实现是可插拔的,比如原来我们使用的logback,现在要替换为log4j2了,因为他们都是基于slf4j的,编码都是面向的接口,改动是无需修改代码,只需要替换依赖jar既可。
1.jcl
jcl支持log4j,jul,jdk13等日志,它是通过动态Class.forName加载的,
优先级为log4j->jul(>=jdk14自带)->jdk13->simpleLog顺序打印,比如动态Class.forName log4j包没有时候会自动再加载jul包,以此顺序,具体可以看log4j包中org.apache.commons.logging.impl.LogFactoryImpl类中classesToDiscover数组中加载顺序。不支持主流的log4j2,logback等,因此现在基本不用,或者用也会桥接到slf4j上。

<dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency>

2.slf4j
slf4j可以支持当期主流的日志,log4j,log4j2,logback,当然也支持从jcl那部分桥接到slf4j上,引入依赖

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.32</version>
</dependency>


上面为要要使用日志和slf4j中间需要引入适配器,比如要是用log4j2,需要引入log4j-slf4j-impl.
三.桥接: 因为我们一个系统可能使用多种日志,这样管理日志文件非常费劲;例如:spring使用jcl,而我们业务代码中用的是log4j2(用slf4j门面),如果不合并可能我们就需要配置两份日志输出路径.因此我们可以通过桥接把jcl桥接到slf4j既可,这样同意变为log4j2了也方便管理,如下面的引入依赖

<dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>1.7.32</version>
</dependency>


最后在整体发一张图

java日志体系(SLF4J,JCL)相关推荐

  1. Java日志体系日志门面(Slf4j)日志实现(Log4j、Log4j2)详解

    1.背景 近日发生两次因日志使用不当导致的线上问题: 1.应用明明配置了info日志级别,却打印大量的debug日志,导致磁盘IO较高,很快就报磁盘空间不足告警 2.应用服务启动后报StackOver ...

  2. Java日志体系权威总结

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:http://r6d.cn/MSaE 概要 本文的目 ...

  3. Java日志体系总结

    概要 本文的目的是搞清楚Java中各种日志Log之间是怎么的关系,如何作用.依赖,好让我们平时在工作中如果遇到"日志打不出"或者"日志jar包冲突"等之类的问题 ...

  4. java日志体系分析

    写在前面 Java中日志框架种类繁多,我也是最近在学习mybatis过程中对日志的使用产生了困惑,所以这里个人做下总结,希望能帮助到和我有一样困惑的朋友,下面我们就开始吧! 1:java日志的发展历史 ...

  5. Java日志体系详解

    一.日志框架的分类 1.1.门面型日志框架: JCL:Apache基金会所属的项目,是一套Java日志接口,之前叫Jakarta Commons Logging,后更名为Commons Logging ...

  6. java日志框架之JCL和SLF4J

    文章目录 1.JCL 1.1.JCL简介 1.2.入门使用 2.SLF4J 2.1.日志门面概述 2.2.SLF4J简介 2.3.入门使用 2.4.slf4j实现slf4j-simple和logbac ...

  7. Java日志系统概述SLF4J、log4j、JCL、Logback

    java日志系统经常遇到SLF4j,JCL,logback,log4j2等等.一些人可能要晕了怎么选择,这里简单说下. 发展 这些都要从Java日志框架的元老log4j说起.java1.3之前打日志都 ...

  8. Java 日志体系详解

    欢迎关注方志朋的博客,回复"666"获面试宝典 本文的目的是搞清楚Java中各种日志Log之间是怎么的关系,如何作用.依赖,好让我们平时在工作中如果遇到"日志打不出&qu ...

  9. java -jar 怎么停止_图解Java日志体系

    概要 本文的目的是搞清楚Java中各种日志Log之间是怎么的关系,如何作用.依赖,好让我们平时在工作中如果遇到"日志打不出"或者"日志jar包冲突"等之类的问题 ...

最新文章

  1. 威纶通触摸屏与mysql_威纶通 与 信捷XC\XD系列PLC 通讯
  2. 阿里巴巴研究员叔同:云原生是企业数字创新的最短路径
  3. 端口可以随便设置吗_驱动可以随便更新吗?
  4. C++基础与深度解析第六章:函数
  5. 深搜(DFS),Image Perimeters
  6. MYSQL列中的数据以逗号隔开,如何查询
  7. 分享:开源货币新世界
  8. SQL进阶教程(一)——CASE表达式
  9. Typora免费版下载【Mac、Windows】
  10. Frefox安装AeroFox皮肤插件后菜单字体的美化
  11. 自定义ImageView加载圆形图片
  12. python三菱fx3u通讯_【案例】三菱FX3UPLC的无线通讯讲解
  13. 如何开发微信小程序?微信小程序有哪些特点?
  14. gbt7714在overleaf中如何把英文作者大写变小写
  15. 区块链测试网服务发布
  16. MOSFET 和 IGBT 栅极驱动器电路的基本原理学习笔记(一)MOSFET技术
  17. Dubbo2.6.5入门——简单的HelloWorld
  18. 2022中国连锁企业人才管理报告
  19. 如何使用开源CMS建设网站
  20. 华软java综合实验二_2018-2019-2 20175311 实验二 《Java开发环境的熟悉》实验报告

热门文章

  1. 二叉树的建立 java_如何用java实现二叉树的构建
  2. 交通标志识别教程(二)
  3. 用c语言编写因子分析程序,相应分析的R包ca和mca,cca,RDA的R实现整理
  4. linux命令行参数含空格,Linux的命令行参数风格
  5. 计算机图形专业世界排名,2020 THE世界大学排名-美国电子电气工程专业
  6. 前后端联调什么意思?
  7. CTF学习笔记20:iwebsec-文件上传漏洞-05-htaccess文件上传
  8. 1.4_9 Axure RP 9 for mac 高保真原型图 - 案例8 【动态面板】浏览、翻页、回弹
  9. java Ymodem协议上位机程序
  10. 超级美味的大盘鸡做法