在大型系统的开发过程中,日志是一个重要的组件,这对于代码调试、线上问题定位都有很大的帮助,本文主要介绍了Java中常用的几种开源日志框架并做了具体的分析。
本文介绍的日志框架主要有以下几种:
- Commons-loggin
- SLF4J
- Log4J
- LogBack
1. commons-logging
commons-logging是apache提供的一个通用的日志接口。用户可以自由选择第三方的日志组件作为具体实现,commons-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。同时common-logging内部也有一个Simple logger的简单实现,但是功能很弱。所以使用common-logging,通常都是配合着其他日志框架来使用。
2. SLF4J
The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks (e.g. java.util.logging, logback, log4j) allowing the end user to plug in the desired logging framework at deployment time. —https://www.slf4j.org/
类似于commons-logging,是对不同日志框架提供的一个接口封装,可以在部署的时候不修改任何配置即可接入一种日志实现方案。
commons-logging通过动态查找的机制,在程序运行时自动找出真正使用的日志库,它使用了ClassLoader寻找和载入底层的日志库。
SLF4J在编译时静态绑定真正的Log库。另外,SLF4J 支持参数化的log字符串,避免了之前为了减少字符串拼接的性能损耗而不得不写的if(logger.isDebugEnable()),现在你可以直接写:logger.debug(“current user is: {}”, user)。
3. Log4j
Apache基金会的开源项目,内部把日志系统抽象封装成Logger 、appender 、pattern等实现,我们可以通过配置文件轻松的实现日志系统的管理和多样化配置。通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等。通过定义每一条日志信息的级别,用户能够更加细致地控制日志的生成过程。
4. Logback
Logback是由Log4j创始人设计的又一个开源日志组件。Logback分为三个模块:logback-core,logback-classic和logback-access。Logback-core是其它两个模块的基础模块,logback-classic是Log4j的一个改良版本。此外logback-classic完整实现SLF4J API,使你可以很方便地更换成其它日志框架如Log4j。logback-access访问模块与Servlet容器集成提供通过Http来记录日志的功能。
Logback作为一个通用可靠、快速灵活的日志框架,将作为Log4j的替代,和SLF4J组成新的日志系统的完整实现,Logback声称具有极佳的性能。
5. Logback配置及介绍
一个典型的logback.xml配置文件的内容如下:
1 |
|
以上内容就是开源日志框架slf4j、log4j、logback的关系及介绍的全部内容了,谢谢你阅读到了这里!
Author: zhaoyh