java的日志
日志框架的体系图
日志的分类
java
中我们使用的日志有 jdkLog
,Log4j
,Log4j2
,Logback
,slf4j
,commons Logging
, 其中 jdkLog
,Log4j
,Log4j2
,Logback
是日志框架的具体实现, slf4j
,commons Logging
是两种日志门面,可以结合日志框架的具体实现。下面介绍一下各自的优缺点,然后在后续的文章中介绍各自的使用以及运行原理。
JdkLog
产生自 jdk1.4
, 是 JDK
官方的日志实现。
该实现直接可以在 jdk
中使用,使用非常方便。但是功能过于简单,不支持占位符显示, 扩展性比较差。
Log4j
是apache
公司的一个日志开源框架。
它设置了 日志 的级别,提供了(DEBUG
/INFO
/Warn
/ERROR
等)日志级别,可以将不同的日志分开打印。
但是不支持占位符,不利于代码的阅读。
Log4j2
也是apache
公司的日志框架, 是log4j
的升级版本. 需要注意的是, Log4j2
和 log4j
并不兼容。
Log4j2
的性能要比 Log4j
的性能好。log4j2
还有其他很多优点,比如它可以作为 审计日志, 还支持自定义级别等。具体的优点以及运行原理,见日志系列之 Log4j
.
Logback
LogBack
和 Log4j
都是一个作者所为。它很好的弥补了 log4j
的缺点。logback
重写了 log4j
的内部实现,性能提高了十倍,减少了内存消耗, 可以完美的与 Slf4j
结合。
两种日志门面
Slf4j
Simple logging face for java
: 简单的java
日志门面,以日志门面生成。和 log4j
是相同作者。
slf4j
本身只是提供日志门面,并没有提供日志的具体实现。
commons Logging
commons logging
是通过动态查找实现的一个日志门面,在程序运行时可以找到对应的日志实现类。
commons logging
内部实现了一个简单的 Logging
实现,但是功能及其简单。
区别与联系
log4j
和 log4j2
log4j
使用 .properties
文件进行配置。log4j2
使用 .xml
, .json
.jsn
来配置。具有良好的阅读性.
log4j
和 logback
logback
在性能上要比log4j
好, 初始化加载内存也更小。logback
在配置文件修改后能够自动重新加载。logback
更自然的实现了slf4j日志门面。