版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiangchao858/article/details/80517744
摘要: Java的日志系统,对于项目的运行状态监控和行为分析有着至关重要的作用,很难想象没有任何日志记录功能的应用程序被运行于生产环境中。目前的Java日志收集有非常多的日志框架,如果能了解它们之间的联系与区别,在使用时方能得心应手。
纷繁复杂的 jar 包
- log4j、log4j-api、log4j-core
- log4j-1.2-api、log4j-jcl、log4j-slf4j-impl、log4j-jul
- logback-core、logback-classic、logback-access
- commons-logging
- slf4j-api、slf4j-log4j12、slf4j-simple、jcl-over-slf4j、slf4j-jdk14、log4j-over-slf4j、slf4j-jcl
接口&实现
在实际项目中,经常见到这些jar包,它们可以分为两个派别:日志框架(slf4j、apache commons logging)+日志系统(log4j、log4j2、LogBack、JUL等)。这里的日志框架提供日志调用的接口,实际的日志输出托付给日志系统实现。
日志框架
- JCL(Jakarta Commons Logging):比較流行的日志框架,非常多框架都依赖JCL,比如Spring等。
- SLF4j:提供新的API,初衷是配合Logback使用,但同一时候兼容Log4j。
日志系统
- Log4j:经典的一种日志解决方式。内部把日志系统抽象封装成Logger 、appender 、pattern 等实现。
- Log4j2:Log4j的2.0版本号。对Log4j进行了优化。例如支持參数API、支持异步appender、插件式架构等。
- Logback:Log4j的替代产品。须要配合日志框架SLF4j使用。
- JUL(java.util.logging):是 Java 内置的日志模块,只能满足基本的日志需要。