问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Java日志框架:slf4j作用及其实现原理

发布网友 发布时间:2024-09-27 22:34

我来回答

1个回答

热心网友 时间:2024-10-09 08:59

日志技术框架一览

JUL:JDK中的日志记录工具,也常称为JDKLog、jdk-logging。

LOG4J1:一个具体的日志实现框架。

LOG4J2:一个具体的日志实现框架,是LOG4J1的下一个版本。

LOGBACK:一个具体的日志实现框架,但其性能更好。

JCL:一个日志门面,提供统一的日志记录接口,也常称为commons-logging。

SLF4J:一个日志门面,与JCL一样提供统一的日志记录接口,可以方便地切换看具体的实现框架。

注意:JUL、LOG4J1、LOG4J2、LOGBACK是日志实现框架,而JCL、SLF4J是日志实现门面(接口)。

SLF4J结构概述

slf4j只是一个日志标准,并不是日志系统的具体实现。理解这句话非常重要,slf4j只做两件事情:

提供日志接口

提供获取具体日志对象的方法如如上图所示:SLF4J作为日志打印实现的适配层,业务代码不需要关心具体使用哪一种日志系统,且如何打印日志。

SLF4J简单Demo

1.引入对应jar包

25<dependency>26<groupId>org.slf4j</groupId>27<artifactId>slf4j-api</artifactId>28<version>1.7.32</version>29</dependency>30<dependency>31<groupId>ch.qos.logback</groupId>32<artifactId>logback-classic</artifactId>33<version>1.2.6</version>34</dependency>

2.增加配置文件log4j2.xml放在resource目录下:

<?xmlversion="1.0"encoding="UTF-8"?><configuration><!--<includeresource="org/springframework/boot/logging/logback/base.xml"/>--><!--appenders--><appendername="DEFAULT-APPENDER"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_PATH}/common.log</file><encoder><pattern>[%d][%level][%X{xRequestId}]%logger-%m%n</pattern><charset>UTF-8</charset><!--此处设置字符集--></encoder><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--dailyrollover--><fileNamePattern>${LOG_PATH}/common.log.%d{yyyy-MM-dd}</fileNamePattern></rollingPolicy></appender><!--loggers--><loggername="com.zenlayer.zenconsole.ocs"level="INFO"additivity="false"><appender-refref="APP-DEFAULT-APPENDER"/><appender-refref="ERROR-APPENDER"/></logger><rootlevel="INFO"><appender-refref="DEFAULT-APPENDER"/><appender-refref="ERROR-APPENDER"/></root></configuration>

3.测试方法

privatestaticfinalLoggerlogger=LoggerFactory.getLogger(SelectBillingOrderImplTest.class);@TestpublicvoidlogTest()throwsIOException{logger.info("");logger.warn("");logger.error("");}

4.执行结果

SLF4J原理解析

1.创建Logger对象(Logger常定义为全局单例对象)

2.getLogger方法

3.拿到实力化工场,并根据日志类返回Logger对象

4.实力化日志工场

5.bind方法为slf4j的核心

6.slf4j回去classPatch下面找所有org.slf4j.impl下StaticLoggerBinder这个类注:存在引入多个Log实现的情况,所以slf4j返回的是一个Set集合但是实际情况系统加载器只加载一个StaticLoggerBinder类。所以启动时会报错,且默认使用加载到的第一个Log实现类,然后调用改类的getSingleton方法

7.以上已经成功获取了ILoggerFactory之后的逻辑是调用Factory的getLogger方法来获取Logger对象。回到了源码:3的位置

找到一种实现,我以LogBack为例:

热心网友 时间:2024-10-09 08:59

日志技术框架一览

JUL:JDK中的日志记录工具,也常称为JDKLog、jdk-logging。

LOG4J1:一个具体的日志实现框架。

LOG4J2:一个具体的日志实现框架,是LOG4J1的下一个版本。

LOGBACK:一个具体的日志实现框架,但其性能更好。

JCL:一个日志门面,提供统一的日志记录接口,也常称为commons-logging。

SLF4J:一个日志门面,与JCL一样提供统一的日志记录接口,可以方便地切换看具体的实现框架。

注意:JUL、LOG4J1、LOG4J2、LOGBACK是日志实现框架,而JCL、SLF4J是日志实现门面(接口)。

SLF4J结构概述

slf4j只是一个日志标准,并不是日志系统的具体实现。理解这句话非常重要,slf4j只做两件事情:

提供日志接口

提供获取具体日志对象的方法如如上图所示:SLF4J作为日志打印实现的适配层,业务代码不需要关心具体使用哪一种日志系统,且如何打印日志。

SLF4J简单Demo

1.引入对应jar包

25<dependency>26<groupId>org.slf4j</groupId>27<artifactId>slf4j-api</artifactId>28<version>1.7.32</version>29</dependency>30<dependency>31<groupId>ch.qos.logback</groupId>32<artifactId>logback-classic</artifactId>33<version>1.2.6</version>34</dependency>

2.增加配置文件log4j2.xml放在resource目录下:

<?xmlversion="1.0"encoding="UTF-8"?><configuration><!--<includeresource="org/springframework/boot/logging/logback/base.xml"/>--><!--appenders--><appendername="DEFAULT-APPENDER"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_PATH}/common.log</file><encoder><pattern>[%d][%level][%X{xRequestId}]%logger-%m%n</pattern><charset>UTF-8</charset><!--此处设置字符集--></encoder><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--dailyrollover--><fileNamePattern>${LOG_PATH}/common.log.%d{yyyy-MM-dd}</fileNamePattern></rollingPolicy></appender><!--loggers--><loggername="com.zenlayer.zenconsole.ocs"level="INFO"additivity="false"><appender-refref="APP-DEFAULT-APPENDER"/><appender-refref="ERROR-APPENDER"/></logger><rootlevel="INFO"><appender-refref="DEFAULT-APPENDER"/><appender-refref="ERROR-APPENDER"/></root></configuration>

3.测试方法

privatestaticfinalLoggerlogger=LoggerFactory.getLogger(SelectBillingOrderImplTest.class);@TestpublicvoidlogTest()throwsIOException{logger.info("");logger.warn("");logger.error("");}

4.执行结果

SLF4J原理解析

1.创建Logger对象(Logger常定义为全局单例对象)

2.getLogger方法

3.拿到实力化工场,并根据日志类返回Logger对象

4.实力化日志工场

5.bind方法为slf4j的核心

6.slf4j回去classPatch下面找所有org.slf4j.impl下StaticLoggerBinder这个类注:存在引入多个Log实现的情况,所以slf4j返回的是一个Set集合但是实际情况系统加载器只加载一个StaticLoggerBinder类。所以启动时会报错,且默认使用加载到的第一个Log实现类,然后调用改类的getSingleton方法

7.以上已经成功获取了ILoggerFactory之后的逻辑是调用Factory的getLogger方法来获取Logger对象。回到了源码:3的位置

找到一种实现,我以LogBack为例:

热心网友 时间:2024-10-09 08:59

日志技术框架一览

JUL:JDK中的日志记录工具,也常称为JDKLog、jdk-logging。

LOG4J1:一个具体的日志实现框架。

LOG4J2:一个具体的日志实现框架,是LOG4J1的下一个版本。

LOGBACK:一个具体的日志实现框架,但其性能更好。

JCL:一个日志门面,提供统一的日志记录接口,也常称为commons-logging。

SLF4J:一个日志门面,与JCL一样提供统一的日志记录接口,可以方便地切换看具体的实现框架。

注意:JUL、LOG4J1、LOG4J2、LOGBACK是日志实现框架,而JCL、SLF4J是日志实现门面(接口)。

SLF4J结构概述

slf4j只是一个日志标准,并不是日志系统的具体实现。理解这句话非常重要,slf4j只做两件事情:

提供日志接口

提供获取具体日志对象的方法如如上图所示:SLF4J作为日志打印实现的适配层,业务代码不需要关心具体使用哪一种日志系统,且如何打印日志。

SLF4J简单Demo

1.引入对应jar包

25<dependency>26<groupId>org.slf4j</groupId>27<artifactId>slf4j-api</artifactId>28<version>1.7.32</version>29</dependency>30<dependency>31<groupId>ch.qos.logback</groupId>32<artifactId>logback-classic</artifactId>33<version>1.2.6</version>34</dependency>

2.增加配置文件log4j2.xml放在resource目录下:

<?xmlversion="1.0"encoding="UTF-8"?><configuration><!--<includeresource="org/springframework/boot/logging/logback/base.xml"/>--><!--appenders--><appendername="DEFAULT-APPENDER"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_PATH}/common.log</file><encoder><pattern>[%d][%level][%X{xRequestId}]%logger-%m%n</pattern><charset>UTF-8</charset><!--此处设置字符集--></encoder><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--dailyrollover--><fileNamePattern>${LOG_PATH}/common.log.%d{yyyy-MM-dd}</fileNamePattern></rollingPolicy></appender><!--loggers--><loggername="com.zenlayer.zenconsole.ocs"level="INFO"additivity="false"><appender-refref="APP-DEFAULT-APPENDER"/><appender-refref="ERROR-APPENDER"/></logger><rootlevel="INFO"><appender-refref="DEFAULT-APPENDER"/><appender-refref="ERROR-APPENDER"/></root></configuration>

3.测试方法

privatestaticfinalLoggerlogger=LoggerFactory.getLogger(SelectBillingOrderImplTest.class);@TestpublicvoidlogTest()throwsIOException{logger.info("");logger.warn("");logger.error("");}

4.执行结果

SLF4J原理解析

1.创建Logger对象(Logger常定义为全局单例对象)

2.getLogger方法

3.拿到实力化工场,并根据日志类返回Logger对象

4.实力化日志工场

5.bind方法为slf4j的核心

6.slf4j回去classPatch下面找所有org.slf4j.impl下StaticLoggerBinder这个类注:存在引入多个Log实现的情况,所以slf4j返回的是一个Set集合但是实际情况系统加载器只加载一个StaticLoggerBinder类。所以启动时会报错,且默认使用加载到的第一个Log实现类,然后调用改类的getSingleton方法

7.以上已经成功获取了ILoggerFactory之后的逻辑是调用Factory的getLogger方法来获取Logger对象。回到了源码:3的位置

找到一种实现,我以LogBack为例:

热心网友 时间:2024-10-09 09:00

日志技术框架一览

JUL:JDK中的日志记录工具,也常称为JDKLog、jdk-logging。

LOG4J1:一个具体的日志实现框架。

LOG4J2:一个具体的日志实现框架,是LOG4J1的下一个版本。

LOGBACK:一个具体的日志实现框架,但其性能更好。

JCL:一个日志门面,提供统一的日志记录接口,也常称为commons-logging。

SLF4J:一个日志门面,与JCL一样提供统一的日志记录接口,可以方便地切换看具体的实现框架。

注意:JUL、LOG4J1、LOG4J2、LOGBACK是日志实现框架,而JCL、SLF4J是日志实现门面(接口)。

SLF4J结构概述

slf4j只是一个日志标准,并不是日志系统的具体实现。理解这句话非常重要,slf4j只做两件事情:

提供日志接口

提供获取具体日志对象的方法如如上图所示:SLF4J作为日志打印实现的适配层,业务代码不需要关心具体使用哪一种日志系统,且如何打印日志。

SLF4J简单Demo

1.引入对应jar包

25<dependency>26<groupId>org.slf4j</groupId>27<artifactId>slf4j-api</artifactId>28<version>1.7.32</version>29</dependency>30<dependency>31<groupId>ch.qos.logback</groupId>32<artifactId>logback-classic</artifactId>33<version>1.2.6</version>34</dependency>

2.增加配置文件log4j2.xml放在resource目录下:

<?xmlversion="1.0"encoding="UTF-8"?><configuration><!--<includeresource="org/springframework/boot/logging/logback/base.xml"/>--><!--appenders--><appendername="DEFAULT-APPENDER"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_PATH}/common.log</file><encoder><pattern>[%d][%level][%X{xRequestId}]%logger-%m%n</pattern><charset>UTF-8</charset><!--此处设置字符集--></encoder><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--dailyrollover--><fileNamePattern>${LOG_PATH}/common.log.%d{yyyy-MM-dd}</fileNamePattern></rollingPolicy></appender><!--loggers--><loggername="com.zenlayer.zenconsole.ocs"level="INFO"additivity="false"><appender-refref="APP-DEFAULT-APPENDER"/><appender-refref="ERROR-APPENDER"/></logger><rootlevel="INFO"><appender-refref="DEFAULT-APPENDER"/><appender-refref="ERROR-APPENDER"/></root></configuration>

3.测试方法

privatestaticfinalLoggerlogger=LoggerFactory.getLogger(SelectBillingOrderImplTest.class);@TestpublicvoidlogTest()throwsIOException{logger.info("");logger.warn("");logger.error("");}

4.执行结果

SLF4J原理解析

1.创建Logger对象(Logger常定义为全局单例对象)

2.getLogger方法

3.拿到实力化工场,并根据日志类返回Logger对象

4.实力化日志工场

5.bind方法为slf4j的核心

6.slf4j回去classPatch下面找所有org.slf4j.impl下StaticLoggerBinder这个类注:存在引入多个Log实现的情况,所以slf4j返回的是一个Set集合但是实际情况系统加载器只加载一个StaticLoggerBinder类。所以启动时会报错,且默认使用加载到的第一个Log实现类,然后调用改类的getSingleton方法

7.以上已经成功获取了ILoggerFactory之后的逻辑是调用Factory的getLogger方法来获取Logger对象。回到了源码:3的位置

找到一种实现,我以LogBack为例:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
财务中什么叫加计扣除 税务上什么叫加计扣除 什么叫加记扣除 如何制定差旅费标准? 夫江宁众彩家禽批发市场怎么坐公交 南京花鸟市场究竟是一处如何经营的市场 关于mp4\psp看电子书txt的问题 驾驶证吊销后如何重新考证? 嘴唇下方属于危险三角区吗?不小心碰到了长在上面的疖子,用餐巾纸... 你好,我上个星期长了个疖子,在两个锁骨中间,牙膏真管用啊? 梦幻西游这个变异4技能吸血鬼值多少钱。 梦幻西游捉了个变异吸血鬼 攻资1540 防资1300 体资3800 速度1200 躲避... 梦幻西游4技变异吸血鬼多少钱 梦幻西游五技能变异吸血鬼多少钱100点卡=590000w,技能都是原始的,初... 甘肃服装设计学校有哪些 宕昌职业技术学校2024年招生简章 想知道: 陇南市在陇南大专学校有哪些在哪? 陇南高考状元曹军文录取到哪所学校 距离甘肃陇南最近的大学有那些 如果和男朋友说不能加别的女生或不能同意别人加你,他会怎么说 昨天上网 手机自己安了手机导航 无法卸载 经济罪有哪些 提交给税务局的收据涉嫌偷税漏税会被公安机关侦查吗? 房屋交易偷税漏税违法吗? 会计犯罪的种类有哪些 偷税漏税90万元刑法有哪些规定 工程师怎么晋升副高级工程师 中级工程师如何晋升副高级工程师 水泥固化剂施工流程是什么 apev2,id3v1,id3v2车载播放选哪个 ...表格隐藏了怎么显示快捷键excel表格隐藏了怎么显示快捷键是什么 3dmax放大窗口快捷键_3dmax放大一个窗口快捷键 我现在15岁留郭富城的什么发型碎发好,我现在在留他原来的蘑菇头好... 我的脸型有点像郭富城的脸型不知道是属于哪种脸型也不知道留什么发型好... 郭富城获奖被整蛊是哪一年?? 炒粉条有哪些好吃的做法? 如何让EXCEL表格的三列不显示出来, 25kw380v应该使用多大的电缆铜线? 电压380伏功率220千瓦距离1500米,用多粗的电缆? &lt;骑马与砍杀&gt;V1.011 有什么作弊代码? 新买的移动电源,插口上有两个USB接口,一个是5V.1A.另一个是5V.2.1A... 香芋奶茶西米露制作步骤 梦到妈是什么意思? 加丽隔热防爆膜质量可以吗贴1台小车大概几钱 窗户框缝隙漏水用什么胶好 如何在密闭空间使用硅酮玻璃胶进行粘接并保持其固化? 女孩什么名字好听2021 生肖牛女孩佳名以及宜用字 4573开头的身份证是哪里的 ...和小鲫鱼那个吃料多个饲外塘土塘放养南美白对虾的塘里,放入小草鱼水... PSD里面怎么把图片扭曲ps怎么把图片扭曲成自己要的形状