SpringBoot的日志使用

SpringBoot的日志使用

SpringBoot的日志选择

SpringBoot默认使用SLF4j和logback用作日志。为什么是两个,为什么是这两个?

日志框架的大致分类

日志框架分为日志的门面框架和具体的实现框架,为什么需要门面框架,是因为不同的系统对日志的需求可能不同,系统一可能使用日志框架一,系统二还需要实现日志功能,如果还用日志框架一,则需要适配系统二进行api的调整。

门面日志框架就为了解决这一问题。让调用框架的api统一,具体的实现可以随不同的系统进行调整。类似jdbc,操作接口需要进行统一。

所以SpringBoot的日志使用分别是用来日志门面框架SLF4j和日志具体实现框架logback作为日志服务。

使用日志

简易使用SLF4j

参考SLF4j官网中的hello world程序:

1
2
3
4
5
6
7
8
9
10
// 导入slf4j的jar包
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}

下图表示了使用slf4j和各个日志实现框架的匹配。绿色的是适配层,深蓝色的是实现框架。比如使用logback作为实现框架,则需要导入slf4j的jar包和logback的相关jar包。但是如果使用log4j作为实现框架,还需导入中间的适配层jar包(中间绿色的)。

使用slf4j

在Springboot-logging-start中使用如下的jar包依赖:

jar包依赖

每一个实现框架都有各自的配置文件,使用slf4j后,配置文件还是使用具体实现的配置文件。

SpringBoot中的SLF4j

  1. SpringBoot底层自动配置使用的是SLF4j和logback。
  2. SprintBoot使用中间包将其他日志框架转化为slf4j框架。
  3. 引入其他日志框架时,需要把这个日志的jar包排除掉。否则与slf4j的jar包相冲突,上一条就是原因。

在测试文件中测试SpringBoot的日志使用

1
2
3
4
5
6
7
8
9
10
11
12
13
Logger logger = LoggerFactory.getLogger(this.getClass());
@Test
public void testLogger(){
// 由低到高 日志的级别,日志框架可以根据配置文件调整输出的日志级别,
// 只会输出相应日志级别及后面的高级别日志信息
logger.trace("这是trace日志");
logger.debug("这是debug日志");
// SpringBoot默认使用的是info级别,
// 可以使用日志的配置文件调整级别
logger.info("这是info日志");
logger.warn("这是warn日志");
logger.error("这是error日志");
}

日志级别有trace, debug,info,warn,error五种日志级别。并且由低到高排序。指定日志级别,则系统会输出当前日志级别和更高的日志级别的日志。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 全局的日志记录级别
#logging:
# level: trace

# 指定的包下的日志记录级别
logging:
level:
com :
nanyin : debug
# pattern: 输出格式
# file:
# console:

# file: -- 这里用于指定日志记录的文件名,可以指定具体的路径,未指定则生成在当前项目下
# path: -- 这里用于指定日志文件的路径,springboot会默认生成路径,默认文件名
# 这两个指定一个就好了,都指定则会默认使用file

使用自定义的配置文件

更换log4j2作为日志框架

-------------本文结束感谢您的阅读-------------

本文标题:SpringBoot的日志使用

文章作者:NanYin

发布时间:2019年07月10日 - 12:07

最后更新:2019年08月12日 - 13:08

原始链接:https://nanyiniu.github.io/2019/07/10/2019-07-10-SpringBoot%E7%9A%84%E6%97%A5%E5%BF%97/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。