# mylogging **Repository Path**: yinpeide/mylogging ## Basic Information - **Project Name**: mylogging - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-29 - **Last Updated**: 2021-12-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 关于日志的例子说明 ``` 只是分为两类: 1、是实际的实现的log 2、两种门面的工厂,jdk实现的jcl,还有sfl4j ``` ##### 1、[jcl-facade-log](https://gitee.com/yinpeide/mylogging/tree/master/jcl-facade-log) 该模块为jcl 门面模式的日志工厂,jcl默认的配置:如果能找到Log4j 则默认使用log4j 实现,如果没有则使用jul(jdk自带的) 实现,再没有则使用jcl内部提供的SimpleLog 实现。 至于这个Log具体的实现类,JCL会在ClassLoader中进行查找。这么做,有三个缺点,缺点一是效率较低,二是容易引发混乱,三是在使用了自定义ClassLoader的程序中,使用JCL会引发内存泄露。 JCL动态查找机制进行日志实例化,执行顺序为:commons-logging.properties---->系统环境变量------->log4j--->jul--->simplelog---->nooplog ~~~ class org.apache.commons.logging.impl.Jdk14Logger ~~~ ##### 2、jul-log jdk自带的日志实现 ~~~ class java.util.logging.Logger ~~~ ##### 3、log4j2-log log4j性能已经很垃圾了,故现在只整合log4j2 ,apache 开发的性能强悍的日志系统 ~~~ class org.apache.logging.log4j.core.Logger ~~~ ##### 4、logback-log 牛人编写的性能很强悍的日志框架 ~~~ class ch.qos.logback.classic.Logger ~~~ ##### 5、slf4j-jcl-log Jakarta Commons Logging 的桥接器. 这个桥接器将Slf4j所有日志委派给Jcl ~~~ class org.slf4j.impl.JCLLoggerAdapter ~~~ ##### 6、slf4j-jdk14-log java.util.logging的桥接器,Jdk原生日志框架。 ~~~ class org.slf4j.impl.JDK14LoggerAdapter ~~~ ##### 7、slf4j-log4j2-log Log4j2版本的桥接器 ~~~ class org.apache.logging.slf4j.Log4jLogger ~~~ ##### 8、slf4j-log4j12-log Log4j1.2版本的桥接器 ~~~ class org.slf4j.impl.Log4jLoggerAdapter ~~~ ##### 9、slf4j-logback-log 同上 logback-log Slf4j的原生实现,Logback直接实现了Slf4j的接口,因此使用Slf4j与Logback的结合使用也意味更小的内存与计算开销 ~~~ class ch.qos.logback.classic.Logger ~~~ ##### 10、slf4j-simple-log 一个简单实现的桥接器,该实现输出所有事件到System.err. 只有Info以及高于该级别的消息被打印,在小型应用中它也许是有用的。 ~~~ class org.slf4j.impl.SimpleLogger ~~~ ##### 11、Integration-log ###### 11.1 ~~~ 实现了一个 log4j 转化为 slf4j 的case,主要操作步骤两步 1、pom中删除 log4j的依赖 log4j log4j 1.2.17 compile 2、增加 log4j 转化为 slf4j使用的依赖 org.slf4j log4j-over-slf4j 1.7.32 ~~~ ###### 11.2 ~~~ 实现了一个spring 如何使用log4j2的例子,默认spring使用的是jcl 调用的jul ~~~ ##### 12、death-circulation-log ~~~ 这个最简单,实现的是一个死循环 你引了四个jar包,slf4j-api-xx.jar,slf4j-log4j12-xx.jar,log4j-xx.jar,log4j-over-slf4j-xx.jar,于是你就会出现如下尴尬的场面 在这种情况下,你调用了slf4j-api,就会陷入死循环中!slf4j-api去调了slf4j-log4j12,slf4j-log4j12又去调用了log4j,log4j去调用了log4j-over-slf4j。最终,log4j-over-slf4j又调了slf4j-api,陷入死循环! ~~~