1、概述
市场上有非常多的日志框架,比如:JUL(java.util.logging)、JCL(Apache Commons-Logging)、Log4j、Log4j2、Logback、SLF4j、jboss-logging等等。SpringBoot在框架内部使用的是JCL,spring-boot-starter-logging采用了slf4j+logback的形式,同时SpringBoot也能自动适配(JUL、log4j2、lobback)并简化配置。
- 日志门面(日志的一个抽象层)
- JCL(Apache Commons-Logging)
- SLF4j
- jboss-logging
- 日志实现
- Log4j
- JUL(java.util.logging)
- Log4j2
- Logback
2、SLF4j使用
2.1 如何在系统中使用SLF4j
官方的用户手册地址:http://www.slf4j.org/manual.html
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的jar和logback的实现jar,调用日志记录方法时,不直接调用日志的实现类而是调用日志的抽象层方法。slf4j具体的使用可以参考下图:
2.2 使用统一的日志框架
让系统中所有的日志都统一到slf4j:
- 将系统的其他日志框架先排除掉
- 用中间包来替换原有的日志框架
- 导入slf4j其他的实现
3、SpringBoot的日志关系
3.1 创建项目
新建一个项目springboot-logging,其中pom.xml的依赖:
org.springframework.boot spring-boot-starter-weborg.springframework.boot spring-boot-starter-test test
3.2 查看日志依赖关系
SpringBoot使用的日志功能:
org.springframework.boot spring-boot-starter-logging 2.1.9.RELEASEcompile
在IDEA中打开pom.xml文件,查看依赖关系,如下图所示:
- SpringBoot底层的日志也是使用slf4j+logback的方式进行日志记录
- SpringBoot把其他的日志都替换成slf4j
3.3 日志的使用
1、SpringBoot默认的日志级别是info,在测试类中添加以下代码并运行。
@RunWith(SpringRunner.class)@SpringBootTestpublic class SpringbootLoggingApplicationTests { Logger logger = LoggerFactory.getLogger(getClass()); @Test public void contextLoads() { // 日志级别,由低到高,trace < debug < info < warn < error logger.trace("这是Trace日志..."); logger.debug("这是debug日志..."); logger.info("这是info日志..."); logger.warn("这是warn日志..."); logger.error("设施error日志..."); }}
运行结果:
2、修改日志级别在application.yml配置文件中增加以下配置:
logging: level: com: xiaoh: springboot: logging: trace
在运行单元测试,结果如下:
3、日志的其他配置
logging: level: com: xiaoh: springboot: logging: trace # 不指定路径时,在当前项目下生成springboot.log日志 # 也可以指定完整的路径 #file: springboot.log # 指定目录,日志文件使用默认的spring.log path: /spring/log pattern: # 在控制台输出的日志格式 console: %d{yyyy-MM-dd HH:mm:ss.SSS} {%thread} %-5level %logger{50} - %msg%n # 在文件中的日志格式 file: %d{yyyy-MM-dd HH:mm:ss.SSS} {%thread} %-5level %logger{50} - %msg%n
日志输出格式:
- %d:表示日期时间
- %thread:表示线程名
- %-5level:表示级别从左显示5个字符宽度
- %logger{50}:表示logger名字最长50个字符,否则按照句点分隔
- %msg:日志消息
- %n:换行符
4、如何自定义配置文件参考官方文档:https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/boot-features-logging.html#boot-features-custom-log-configuration ![file](https://graph.baidu.com/resource/2124bb45851d9a45d422a01572082405.png) 在resources目录下新建一个配置文件logback-spring.xml:```<?xml version="1.0" encoding="UTF-8"?>[ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %logger{96} [%line] - %msg%nUTF-8${LOG_HOME}/logs/APP-%d{yyyy-MM-dd}.%i.log3064MB [ %-5level] [%date{yyyy-MM-dd HH:mm:ss}] %logger{96} [%line] - %msg%n UTF-8
`
4、源码
GitHub:https://github.com/chenjiecg/SpringBoot.git