Spring Boot学习之Logback和Log4j2集成与日志发展史

本文介绍了Java日志框架的发展,包括JUL、Log4j、JCL、SLF4J、Logback和Log4j2。详细讲述了Spring Boot中Logback的默认集成及配置,包括日志文件输出、自定义配置和代码使用。同时,文章还涵盖了Log4j2的集成方法,提供相关配置示例。最后,提供了示例源码链接和参考资料。
摘要由CSDN通过智能技术生成

一、简介

Java知名的日志有很多,比如:JUL、Log4j、JCL、SLF4J、Logback、Log4j2,那么这些日志框架之间有着怎样的关系?诞生的原因又是解决什么问题?下面一起来看。

1.1 JUL

Java有自己的日志框架JUL(Java Util Logging)在java.util.logging下,因为对开发者不友好,使用成本太高和日志级别分类不清晰的问题,所有很少有开发者用。

1.2 Log4j

因为JUL的缺陷问题,这就给了Log4j机会,所有Log4j一经推出就迅速风靡全球。

1.3 JCL

JCL是Jakarta Commons-Logging的缩写,Jakarta在这里指的是一个组织,而不是印度的首都雅加达,Jakarta,一个早期的Apache开源项目,用于管理各个Java子项目,诸如Tomcat, Ant, Maven, Struts, JMeter, Velocity, JMeter, Commons等。2011年12月,在所有子项目都被迁移为独立项目后,Jakarta名称就不再使用了。

JCL诞生的初衷是因为Java自身的一些包用了JUL,而Log4j用户使用的有很多,那么JCL就是提供一套API来实现不同Logger之间的切换。

1.4 SLF4J

SLF4J(Simple Logging Facade For Java)简单日志门面,和JCL功能类似,但JCL有一个致命的缺点就是算法复杂,出现问题难以排除,而SLF4J的诞生就是为了解决JCL的缺点。

值得一提的是SLF4J的作者就是Log4j的作者。

1.5 Logback

Logback是Log4j的作者的另一个开源日志组件,与Log4j相比,Logback重新了内核,使它的性能提升了很多,大约是Log4j的10倍,同时占用更小的内存,并且完整的实现了SLF4J API是你可以很方便的切换日志框架。

1.6 Log4j2

Log4j2有着和Logback相同的功能,但又有自己单用的功能,比如:插件式结构、配置文件优化、异步日志等。

Log4j2是Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些固有问题。

从GitHub的更新日志来看,Logback已经有半年没有更新了,而作为知名组织的Apache下的Log4j2的更新却是非常活跃的,Log4j 1.x 于2015年8月停止维护更新了。

GitHub地址

Logback:https://github.com/qos-ch/logback

log4j2:https://github.com/apache/logging-log4j2

本文分别来看Logback和Log4j2在Spring Boot中的实现。

二、Logback使用

开发环境

  • JDK 8
  • Spring Boot 2.0.4 RELEASE
  • Maven
  • Windows 10
  • IDEA 2018.2

2.1 Logback的使用

Spring Boot默认集成了Logback,可以开箱即用,非常方便。因为spring-boot-starter-logging是Logback的日志实现,而Spring Boot启动项spring-boot-starter又依赖了spring-boot-starter-logging,所以Spring Boot就默认集成了Logback,包依赖如下图:

日志是默认控制台输出的,我们程序启动的时候就使用Logback,如下图所示:

日志组成解读&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值