目前Java有日志实现框架、日志接口框架和日志实现桥接的框架这三类,具体分类如下图所示:
commons-logging和slf4j都是提供的日志接口,没有提供具体的实现,目的是让用户面向接口编程,屏蔽掉各种日志实现框架的差异性;而像log4j 1.x、logback等日志框架都是具体的实现,日志的打印是需要接口+具体的实现配合使用。
随着各种日志框架的出现,为了完成日志格式的统一,又出现了各种日志桥接的框架。
log4j是第一款开源日志打印框架,由apache开源,可以将日志输出到控制台、文件、守护进程;用户可以控制日志打印格式,log4j于2012年停止更新,它的替代版本是log4j2和logback。Java框架自带的日志打印框架不支持占位符等,通常很少使用。
目前比较推荐的日志框架搭配是slf4j+log4j 2或者slf4j+logback,仍然有比较多的老系统在使用commons-logging+log4j的搭配方式或者slf4j+log4j的搭配方式。
log4j
日志打印级别
日志打印级别从低到高分别是:DEBUG、INFO、WARN、ERROR、FATAL。
日志匹配规则
- 首先会匹配logger的name,如果没有匹配的name,那么会使用默认的root;如果匹配到logger,需要匹配logger的level和appender的threshold;
- 如果类名com.alipay.fund.xx,那么它会优先匹配com.alipay.fund,其次才会匹配com.alipay,如果在logger中additivity=false,那么匹配到logger后,不会继续向上匹配;
https://blog.csdn.net/qq_32364027/article/details/53187468