# 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,陷入死循环!
~~~