SpringBoot学习笔记-3:第三章 Spring Boot 日志

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: SpringBoot学习笔记-3:第三章 Spring Boot 日志

第三章 Spring Boot 日志

1、日志框架分类和选择

日志框架:

日志门面(抽象层):
JCL Jakarta Commons Logging
SLF4j Simple Logging Facade for Java
Jboss-logging
日志实现:
JUL Java.util.logging
logback
log4j
log4j2


SpringBoot 选择:

  1. 日志门面 SLF4j
  2. 日志实现 logback

2、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");
  }


image.png

每一个日志的实现框架都有自己的配置文件,

使用 slf4j 以后,配置文件还是做成日志实现框架的配置文件

3、其他日志框架统一转换为 slf4j

遗留问题, 各框架使用的日志框架不一样

Spring (commons-logging)
Hibernate(jboss-logging)
MyBaits


统一日志框架

image.png


  1. 将系统中其他日志框架先排除
  2. 用中间包来替换原有的日志框架
  3. 引入 slf4j 其他实现

4、SpringBoot 日志关系

  1. SpringBoot 能自动适配所有日志,底层使用 slf4j+logback 方式记录日志
  2. SpringBoot 把其他日志替换成了 slf4j
  3. 中间替换包
  4. 如果引入其他框架,需要把其他框架默认的日志依赖移除

5、SpringBoot 默认配置

日志级别由低到高

trace
debug
info  默认级别
warn
error


修改日志级别

application.properties

logging.level.com.className=trace
• 1


使用示例

package com.mouday;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
    Logger logger = LoggerFactory.getLogger(getClass());
    @Test
    public void contextLoads() {
        logger.trace("trace");
        logger.debug("trace");
        logger.info("trace");
        logger.warn("trace");
        logger.error("trace");
    }
}

日志配置

# 指定日志文件(优先作用)
logging.file=spring.log
# 指定日志路径
logging.path=logs
# 控制台输出日志格式
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


日志格式说明


%d           日期时间

%thread      线程名

%-5level     级别从左显示5个字符宽度

%logger{50}  logger名字最长显示50个字符,否则按照句点分割

%msg         日志消息

%n           换行


6、指定日志文件和日志 Profile 功能

建立使用日志框架的配置文件,springboot 将不使用默认配置


logback                logback-spring.xml, logback.xml
Log4j2                 log4j2-spring.xml
JUL(Java Util Logging) logging.properties


说明

logback.xml 直接被日志框架识别
logback-spring.xml 日志框架不直接加载配置文件
• 1
• 2

可以使用高级功能

<springProfile name="dev">
</springProfile>


7、切换日志框架

可以按照 slf4j 日志适配图进行切换

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
74 5
|
26天前
|
Java 中间件
SpringBoot入门(6)- 添加Logback日志
SpringBoot入门(6)- 添加Logback日志
34 1
|
1月前
|
前端开发 Java 开发者
Spring生态学习路径与源码深度探讨
【11月更文挑战第13天】Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学习路径入手,详细探讨如何系统地学习Spring,并深入解析各个重点的底层实现逻辑。
59 9
|
1月前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
45 1
|
2月前
|
前端开发 Java 数据库
SpringBoot学习
【10月更文挑战第7天】Spring学习
38 9
|
26天前
|
Java Kotlin 索引
学习Spring框架特性及jiar包下载
Spring 5作为最新版本,更新了JDK基线至8,修订了核心框架,增强了反射和接口功能,支持响应式编程及Kotlin语言,引入了函数式Web框架,并提升了测试功能。Spring框架可在其官网下载,包括文档、jar包和XML Schema文档,适用于Java SE和Java EE项目。
28 0
|
2月前
|
XML Java 数据格式
Spring学习
【10月更文挑战第6天】Spring学习
23 1
|
2月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
97 2
|
2月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
169 1
|
2月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
34 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现