springboot如何配置日志

news/2025/2/21 6:49:51/

1、默认日志 logback

默认情况下,springboot会使用logback来记录日志,并且使用INFO级别输出到控制台,在运行程序的时候,你应该看到过很多这样INFO级别的日志了。

在这里插入图片描述

从上图可以看到,日志输入的内容如下:

  • 时间日期:精确到毫秒
  • 日志级别:ERROR,WARN,INFO,DEBUG,TRACE
  • 进程ID:12428
  • 分隔符:— 标识实际日志的开始
  • 线程名:方括号括起来(可能会截断控制台输出)
  • Logger名:通常使用源代码的类名
  • 日志内容:xxx

2、添加依赖

假如maven依赖中添加了spring-boot-starter-logging

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId>
</dependency>

但是呢,实际开发中我们不需要直接添加该依赖。

你会发现spring-boot-starter或者spring-boot-starter-web其中包含了 spring-boot-starter-logging,该依赖内容就是 SpringBoot 默认的日志框架 logback

工程中有用到了Thymeleaf,而Thymeleaf依赖包含了spring-boot-starter,最终我只要引入Thymeleaf即可

在这里插入图片描述

3、控制台输出

日志级别从低到高:

TRACE < DEBUG < INFO < WARN < ERROR < FATAL
  • 如果设置为 WARN ,则低于 WARN 的信息都不会输出。
  • Spring Boot中默认配置ERROR、WARN和INFO级别的日志输出到控制台。

您还可以通过启动您的应用程序--debug标志来启用“调试”模式(开发的时候推荐开启),以下两种方式皆可:

  • 在运行命令后加入--debug标志,如:$ java -jar springTest.jar --debug
  • application.properties中配置debug=true,该属性置为true的时候,核心Logger(包含嵌入式容器、hibernatespring)会输出更多内容,但是你自己应用的日志并不会输出为DEBUG级别

在这里插入图片描述

这里也验证了上面的观点,springboot默认把ERROR、WARN和INFO级别的日志输出到控制台,

//日志的类名必须是当前类,如果不是当前类,那么输出日志的类名也是错的
private final Logger logger = LoggerFactory.getLogger(Hl13LogApplicationTests.class);

这里每一个类都需要写上面的,这样很麻烦,可以使用注解@Slf4j,可是需要使用lombok

在这里插入图片描述

可以使用{}占位符来拼接字符串,而不需要使用““+””来连接字符串

在这里插入图片描述

4、文件输出

默认情况下,springboot将日志输出到控制台,不会写到日志文件。

使用Spring Boot喜欢在application.propertiesapplication.yml配置,这样只能配置简单的场景,保存路径、日志格式等。复杂的场景(区分 info 和 error 的日志、每天产生一个日志文件等)满足不了,只能自定义配置。

4.1控制台格式化输出内容

# 格式化,只输出日期和内容
logging.pattern.console= "%d -%p -%m" %n

在这里插入图片描述

打印参数: Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:

%m   输出代码中指定的消息
%p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
%r   输出自应用启动到输出该log信息耗费的毫秒数 
%c   输出所属的类目,通常就是所在类的全名 
%t   输出产生该日志事件的线程名 
%n   输出一个回车换行符,Windows平台为“\\r\\n”,Unix平台为“\\n” 
%d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:		%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2018年6月15日22:10:28,921  
%l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:		Testlog4.main(TestLog4.java: 10)

4.2日志输出路径

这里设置输出路径为E:\log

# 日志输出路径
logging.path= E:\\log

默认会在设置的 path 生成一个spring.log 文件。

在这里插入图片描述

如果要编写除控制台输出之外的日志文件,则需在application.properties中设置logging.filelogging.path属性。

  • logging.file,设置文件,可以是绝对路径,也可以是相对路径。如:logging.file=my.log
  • logging.path,设置目录,会在该目录下创建spring.log文件,并写入日志内容,如:logging.path=E:\\log
  • 如果只配置logging.file,会在项目的当前路径下生成一个 xxx.log 日志文件。
  • 如果只配置logging.path,在 E:\\log文件夹生成一个日志文件为 spring.log
#这样会在当前项目下生成my.log文件
logging.file=my.log# 这样会在指定目录生成my.log文件
# logger文件夹需要提前生成
logging.file= src\\main\\resources\\logger\\my.log

注:二者不能同时使用,如若同时使用,则只有logging.file生效
默认情况下,日志文件的大小达到10MB时会切分一次,产生新的日志文件,默认级别为:ERROR、WARN、INFO

5、级别控制

所有支持的日志记录系统都可以在Spring环境中设置记录级别(例如在application.properties中)
格式为:'logging.level.* = LEVEL'

logging.level:日志级别控制前缀,*为包名或Logger名

LEVEL:选项TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF

#com.mye.hl13log包下所有class以DEBUG级别输出
logging.level.com.mye.hl13log=DEBUG

http://www.ppmy.cn/news/1277046.html

相关文章

【终极教程】cocos2dx-js 分批次混淆压缩js文件

说明: 1> 由于我们当前游戏框架的结构是平台形式的就是一个大厅里面有若干个子游戏,所以在发布的时候得区分子游戏和大厅了解了一下 project.json 里面有一个 jsList 可以把所有放进去的js文件压缩混淆成一个大的文件但是我们游戏的子游戏非常多 这样子弄显然不合适&#x…

Python开发GUI常用库PyQt6和PySide6介绍之二:设计师(Designer)

Python开发GUI常用库PyQt6和PySide6介绍之二&#xff1a;设计师&#xff08;Designer&#xff09; PySide6和PyQt6都有自己的设计师&#xff08;Designer&#xff09;&#xff0c;用于可视化地设计和布局GUI应用程序的界面。这些设计师提供了丰富的工具和功能&#xff0c;使开…

【介质】DWPD 每日整盘写入次数 衡量SSD固态硬盘寿命

SSD DWPD什么意思? 经常看到厂商发布的SSD产品有DWPD这个指标&#xff0c;DWPD是什么意思&#xff1f; DWPD DWPD,&#xff08;Diskful Writes Per Day&#xff09;&#xff0c;每日整盘写入次数&#xff0c;指在预期寿命内可每日完整写入SSD固态硬盘所有容量的次数。 也有…

python的装饰器、with、上下文管理器等简单的记录

目录 装饰器 大致流程 with与上下文管理器 上下文管理器 装饰器 参考这里&#xff0c;非常nice的文章 引用他的话&#xff1a; 写代码要遵循开放封闭原则&#xff0c;简单来说&#xff0c;已经实现的功能代码内部不允许被修改&#xff0c;但外部可以被扩展。装饰器可以在…

vue创建项目

1、配置node环境 Node.js 安装配置-----菜鸟教程 npm 使用介绍-----菜鸟教程 淘宝镜像 淘宝 NPM 镜像是一个完整 npmjs.org 镜像&#xff0c;你可以用此代替官方版本(只读)&#xff0c;同步频率目前为 10分钟 一次以保证尽量与官方服务同步。 可以使用淘宝定制的 cnpm (gzip …

精通服务器远程管理:全面指南

引言 在当今数字化世界中&#xff0c;IT专业人员和管理员能够远程管理服务器的能力是无价之宝。远程服务器管理不仅提高了效率&#xff0c;而且在无法物理访问服务器的情况下确保了持续的运营。本指南将深入探讨远程管理的不同类型、远程桌面的使用方法&#xff0c;以及如何安全…

Ubuntu 常用命令之 unzip 命令用法介绍

&#x1f4d1;Linux/Ubuntu 常用命令归类整理 unzip命令在Ubuntu系统中用于解压缩.zip文件。它可以解压缩一个或多个.zip文件&#xff0c;并将文件解压缩到当前目录或指定的目录。 unzip命令的一般格式 unzip [选项] zipfile [file...]其中&#xff0c;zipfile是要解压的.zi…

在vue中通过js动态绘制table,并且合并连续相同内容的行,支持点击编辑单元格内容

首先是vue代码 <template><div id"body-container"style"position: absolute"><div class"box-container"><div class"lsb-table-box" ><div class"table-container" id"lsb-table"&…