Java混乱的日志体系

日志框架发展史

System.out.println 的方式输出

日志框架功能:

  1. 把日志记录在文本中

  2. 日志信息按天进行备份

  3. 日志信息按等级输出

  4. 出现错误日志时发邮件通知

  5. 异步日志输出

  6. 日志输出格式定义

开源 log4j 收到广大开发者欢迎,被apache基金会收纳;

jdk官方sun,开发一个日志框架jul (java.util.logging); spring

这时候市面上的日志框架非常的混乱,一个项目,一个模块log4j,一个模块jul,或者jboss-logging。

jdk开发了一个日志门面JCL jakarta Commons Logging ,日志门面(不实现日志功能,整合日志的)

apache基金会员工张三单独开发日志门面slf4j,(不实现日志功能,整合日志的)

适配器:

桥接器:

模块1:官方 JCL门面,实现jul

模块2:slf4j --->(桥接器) --->log4j

后面apache开发log4j2

后面张三开发logback

日志实现日志门面
log4jJCL
jul java.util.loggingSLF4J
log4j2SLF4J
logbackSLF4J

开源领域:log4j(日志实现) + slf4j(日志门面) + 桥接器

<!--log4j 核心依赖-->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
<!--slf4j 核心依赖-->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
</dependency>
<!--slf4j 到 log4j 的桥接器-->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
</dependency>

官方领域:Jul(日志实现) + JCL(门面)

<!--JCL 门面依赖-->
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>

JCL默认配置:如果能找到Log4j则默认使用log4j实现,如果没有则使用jul(jdk自带的)实现,再没有则使用jcl内部提供的SimpleLog实现。

common-logging.properties 中指定的 ------> 系统环境变量 ------> log4j ------> jul ------> simplelog ------> nooplog

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
​
 Log log = LogFactory.getLog(JulMain.class);
 log.trace("trace");

Log具体的实现类,JCL会在ClassLoader中进行查找。

缺点:

  1. 效率底下

  2. 容易引发混乱

  3. 使用了自定义的ClassLoader的程序容易引发内存泄漏

JCL ------> (适配器) SLF4J

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

SpringBoot 默认使用日志框架logback

<!--Springboot 官方原配-->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-logging</artifactId>
 </dependency>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值