二、SpringBoot日志
一.日志框架(实现类,实现)
日志框架很多,只写了三个常用的
1、Log4j
Log4j是Apache的一个Java的日志库,通过使用Log4j,我们可以控制日志信息输送的目的地(控制台、文件、数据库等);我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
2、Logback
Logback,一个“可靠、通用、快速而又灵活的Java日志框架”。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统,如log4j或JDK14 Logging。logback-access模块与Servlet容器(如Tomcat和Jetty)集成,以提供HTTP访问日志功能。请注意,您可以在logback-core之上轻松构建自己的模块。
3、Log4j2
Apache Log4j 2是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并提供了Logback中可用的许多改进,同时修复了Logback架构中的一些问题。
现在最优秀的Java日志框架是Log4j2,没有之一。根据官方的测试表明,在多线程环境下,Log4j2的异步日志表现更加优秀。在异步日志中,Log4j2使用独立的线程去执行I/O操作,可以极大地提升应用程序的性能。
二.日志门面(日志的抽象层,接口)
需要选择一个日志门面(一套接口),再选一个日志框架(实现日志门面的接口),才能完成日志的功能。
1、为什么需要日志门面
面向接口编程:降低耦合度。
日志实现,可能会有一些代码的优化和改动,避免影响用户在项目中的使用,使用日志门面这些统一的接口,假设在实现层代码做了更改,用户在项目中使用日志而调用的接口等等都是不会受影响的。
2、SLF4J
SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。
三.SpringBoot的日志使用
<!-- SpringBoot 核心包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!-- <exclusions> <exclusion> <artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId> </exclusion> </exclusions> -->
</dependency>
SpringBoot使用spring-boot-starter-logging来做日志功能
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>2.1.1.RELEASE</version>
<scope>compile</scope>
</dependency>
SpringBoot能够自动适配所有的日志框架,但是如果要引入其他的日志框架,那么需要把默认的日志框架移排除掉(移除logback-core)
1、日志的方法和级别
日志级别:trace<debug<info<war<error,SpringBoot默认是info级别
log.trace();
log.debug();
log.info();
log.war();
log.error();
2、日志的默认配置
都不指定就只输出在控制台
1.logging.file
指定文件名称,比如spring.log,就会输出在根目录下,输出spring.log文件
2.logging.path
指定路径
3.pattern
指定控制台中输出的日志格式