当前位置: 首页 > news >正文

JAVA-springboot log日志

SpringBoot从入门到精通-第8章 日志的操作

一、Spring Boot默认的日志框架

SpringBoot支持很多种日志框架,通常情况下,这些日志框架都是由一个日志抽象层和一个日志实现层搭建而成的,日志抽象层是为记录日志提供的一套标准且规范的框架,其作用是为记录日志提供接口,日志实现层是由日志抽象层实现的框架。
在SpringBoot中,常见的日志抽象层由jcl、slf4j、jboos-logging等。常见的日志实现层由log4j、jul、log4j2、logback等。SpringBoot默认使用的抽象层是slf4j,默认使用的日志实现层是logback。

二、打印日志

在使用slf4j打印日志时,需要创建日志对象,创建日志对象的语法如下:

Logger log = LoggerFactory.getLogger(所在类.class);

例如:在TestController类例创建日志对象,那么getLogger()方法的参数就要写成TestController.class,实例代码如下

package com.example._20250605springboot_log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;//import java.util.logging.Logger;@RestController
public class TestController {
//private static final Logger log = LoggerFactory.getLogger(getClass());
Logger log = LoggerFactory.getLogger(TestController.class);
@RequestMapping("/index")public String index(String val1,String val2){log.info("This is index");
//    log.info("val1={},val2={}",val1,val2);log.info("val1="+val1+"----val2="+val2);return "";
}
}

运行程序,访问http://localhost:8080/index,控制台输出

2025-06-07T08:52:49.578+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-3] c.e._.TestController                     : This is index
2025-06-07T08:52:49.578+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-3] c.e._.TestController                     : val1=null----val2=null
2025-06-07T09:10:55.458+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-7] c.e._.TestController                     : This is index
2025-06-07T09:10:55.459+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-7] c.e._.TestController                     : val1=null----val2=null

三、解读日志

2025-06-07T08:52:49.578+08:00  INFO 3140 --- [20250605springboot_log] [nio-8080-exec-3] c.e._.TestController                     : This is index

解读:
2025-06-07T08:52:49.578+08:00 : 打印日志具体的时间到毫秒级
INFO :打印日志的级别
3140 :当前项目的进程编号(PID)
“—” : 分隔符,五实际意义
[20250605springboot_log] [nio-8080-exec-3] :打印日志的线程名称
c.e._.TestController : 日志是由项目的哪个类打印的,这里由于包名有点长,省略写法
This is index : 输出的信息

四、保存日志

4.1保存日志文件的生成位置
在application.properties配置文件中配置:

logging.file.path=.

点表示项目位置的当前目录下,且日志名为spring。可以自定义日志文件位置
在这里插入图片描述
在这里插入图片描述

4.2指定日志文件的生成名称
在application.properties配置文件中配置:

logging.file.name=${logging.file.path}\\test.log

4.3为日志文件添加约束
指定日志文件的最大保存天数
在application.properties配置文件中配置:

logging.logback.rollingpolicy.max-history=2

指定日志文件的最大容量
在application.properties配置文件中配置:

logging.logback.rollingpolicy.max-file-size=2KB

指定归档文件的名称格式
默认

${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz

启动项目自动压缩日志文件
在application.properties配置文件中配置:

logging.logback.rollingpolicy.clean-history-on-start=true

启动项目后遍历打印很多内容验证日志文件压缩和大小
在这里插入图片描述

五、调整日志

5.1设置日志级别

  • ERROR
  • WARN
  • INFO
  • DEBUG
  • TRACE
    ERROR > WARN > INFO > DEBUG > TRACE

在application.properties配置文件中配置:

logging.level.com.example._20250605springboot_log.TestController=debug

5.2设置日志格式

  • %date{yyyy-MM-dd HH:mm:ss.SSS} 时间
  • %5level 日志级别
  • ${PID} 进程号
  • %15.15t %t表示线程名 15.15表示最短或最长为15个字符
  • %-40.40logger{39}
  • %m 具体的内容
  • %n 换行符

设置日志文件格式
在application.properties配置文件中配置:

logging.pattern.file=

设置控制台打印格式
在application.properties配置文件中配置:

logging.pattern.console=

六、logback.xml配置

logback.xml配置文件和application.properties配置文件都被存储在resource目录下,logback.xml的优先级高于application.properties。都存在,会采用logback.xml的配置。

七、遇到的问题

1、import导入logger类的时候要注意导入的是下面的路径

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

刚开始创建类直接引用Logger log 时候springboot会自动导入logger路径的类,但是程序提示错误“不兼容的类型”,自动导入的路径为:

import java.util.logging.Logger;

在这里插入图片描述
然后修改了上面的导入路径为:

import org.slf4j.Logger;

就可以正常使用了。

http://www.lqws.cn/news/196129.html

相关文章:

  • Android第十五次面试总结(第三方组件和adb命令)
  • 通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
  • Java编程之原型模式
  • python并发编程
  • 【C++ 真题】P1747 好奇怪的游戏
  • 【数据结构初阶】单链表
  • 计算机操作系统(十五)死锁的概念与死锁的处理方法
  • 使用VHD虚拟磁盘安装双系统,避免磁盘分区
  • C语言:数据的存储
  • SQL Server全局搜索:在整个数据库中查找特定值的高效方法
  • 个人电脑部署本地大模型+UI
  • 从混乱到秩序:探索管理系统如何彻底改变工作流程
  • C++指针(二)
  • 怎么解决cesium加载模型太黑,程序崩溃,不显示,位置不对模型太大,Cesium加载gltf/glb模型后变暗
  • Windows账户管理,修改密码,创建帐户...(无需密码)
  • Python打卡第46天
  • N8N概述
  • [假面骑士] 龙骑浅谈
  • 第三章支线一 ·原能之核:语法起源
  • 驱控边界在哪里?知名舵机品牌伟创动力CNTE2025展带来答案
  • Vue基础(14)_列表过滤、列表排序
  • Python打卡训练营day46——2025.06.06
  • 【动手学深度学习】3.1. 线性回归
  • string类(详解)
  • 从零开始的python学习(七)P95+P96+P97+P98+P99+P100+P101
  • 【知识扫盲】如何由inq,ouq和totaltime计算tokens/s
  • Unity3D仿星露谷物语开发60之定制角色其他部位
  • 【时时三省】(C语言基础)局部变量和全局变量
  • Linux驱动:再看静态映射和动态映射
  • Java常用的判空方法