点击箭头处
“蓝色字”
,关注我哦!!
日志框架介绍
市面上的日志框架比较多,有JCL、JUL、jboos-logging、logback、log4j、log4j2、slf4j等。我们在spring boot项目中应该使用哪种框架呢?
事实上日志框架应该分为两个方面来看,一个是日志门面,一个是日志实现,门面就好比是一种规范,实现就是根据门面的规范实现的代码,所以我们应该选用一种门面和一种实现应用于我们的项目。
SLF4J日志框架
Spring Boot选用的是slf4j和logback作为日志框架,slf4j的运用在其官网有相应的介绍和使用方法,通过slf4j门面,可以使用几乎所有的日志实现,下图是slf4j关于如何使用其日志实现的方法。
图1
需要主义的是,我们在开发的时候不应该直接调用日志的实现类,而是调用抽象层的方法,也就是说我们采用slf4j+logback的框架那么我们应该调用slf4j的方法。
就像图片中所看到的那样,如果我们要使用logback框架,先调用slf4j的api,slf4j的api再去找相应的logback实现;如果要使用log4j,由于一开始log4j也没有想到要支持slf4j,所以应该有一层中间的转换层,也就是先调用slf4j的api,然后api去调用slf4j-log412.jar这个包的方法,然后这个包再去调用log4j的实现;要使用其他框架也是按照图中的流程来,只需要导入相应的jar包,然后像下面一段代码那样使用就可以了。
下面就如何使用slf4j写一个简单的程序:
importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;publicclassHelloWorld{publicstaticvoidmain(String[]args){Loggerlogger=LoggerFactory.getLogger(HelloWorld.class);logger.info("HelloWorld");}}
SLF4J配合其他日志框架
由于Spring Boot、Hibernate、Mybatis等框架采用的日志框架都不相同,那么我们如何统一日志记录呢?也就是如何解决统一使用slf4j进行日志记录?
slf4j官网有一张图(图2),我们可以看到,图1中是slf4j使用不同日志实现框架的方法,图2是在使用不同实现框架的时候,如何将其他框架统一到当前框架的方法。
如何将其他框架统一到当前框架呢?
三步骤:
1、将系统中其他框架先排除出去;
2、用中间包来替换原有的日志框架;
3、导入slf4j其他的实现
举个例子:当我们想用slf4j+logback的日志框架来统一的时候,遵循图2的方法,如果有commons logging的框架,那就把jcl-over-slf4j.jar替换commons-logging.jar,如果用到log4j的api,那就把log4j-over-slf4j.jar替换log4j.jar,其他的类似。
图2
Spring Boot日志配置
Spring Boot有以下几种日志级别,分别是:
1、trace
2、debug
3、info
4、warn
5、error
日志级别由低到高,默认日志级别是info。
SpringBoot的日志输出格式为:
%d表示日期时间
%thread表示线程名
%-5level级别从左显示5个字符宽度
%logger{50}表示logger名字最长50个字符,否则按照据点分割
%msg表示日志消息
%n表示换行
举例:%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
修改日志的默认配置:
修改默认级别
logging.level.xxx.xxx=trace
指定存储日志路径
logging.path=/spring/log
logging.file=G:\loging.log
指定控制台输出的日志格式
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
指定文件中日志输出格式
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} ==== %msg%n
指定配置:
如果我们需要使用自己的配置文件配置日志,那么只需要给类路径下放上每个日志框架自己的配置文件即可
logback:logback-spring.xml、logback-spring.groovy、logback.xml、logback.groovy
log4j2:log4j2-spring.xml、log4j2.xml
JDK:logging.properties
完结
图片:来自网络
文章:来自后端带师
排版:新榜编辑器