一、日志框架的选择

市面上常见的日志框架有很多,它们可以被分为两类:日志门面(日志抽象层)和日志实现,如下表。 
日志分类
描述
举例
日志门面(日志抽象层)
为 Java 日志访问提供一套标准和规范的 API 框架,其主要意义在于提供接口。
JCL(Jakarta Commons Logging)、SLF4j(Simple Logging Facade for Java)、jboss-logging
日志实现
日志门面的具体的实现
Log4j、JUL(java.util.logging)、Log4j2、Logback
通常情况下,日志由一个日志门面与一个日志实现组合搭建而成,Spring Boot 选用 SLF4J + Logback 的组合来搭建日志系统。 
SLF4J 是目前市面上最流行的日志门面,使用 Slf4j 可以很灵活的使用占位符进行参数占位,简化代码,拥有更好的可读性。Logback 是 Slf4j 的原生实现框架,它与 Log4j 出自一个人之手,但拥有比 log4j 更多的优点、特性和更做强的性能,现在基本都用来代替 log4j 成为主流。
优先级:
TRACE < DEBUG < INFO < WARN < ERROR
 
二、SLF4J的使用
1、如何在系统中使用SLF4J
以后在开发的时候,日志记录方法的调用,不应该来直接调用日志接口的实现类,而是调用日志抽象层里面的方法
应该给系统里面导入slf4j的jar包和
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"); } }
三、spring boot的日志关系
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.6.2</version> <scope>compile</scope> </dependency>
spring boot使用他来做日志功能:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> <version>2.6.2</version> <scope>compile</scope> </dependency>
底层依赖关系:

 

 

总结:
1)、spring boot底层也是使用SLF4J+logback的方式进行日志记录
2)、spring boot也把其他的日志都替换成了slf4j
3)、中间转换包

 

 

4)、如果我们要引入其他框架,一定要把这个框架的默认日志依赖移除掉
四、日志使用
1、默认配置
spring boot已经默认帮我们配置好了日志;
2、修改默认日志配置:
我们可以根据自身的需求,通过全局配置文件(application.properties/yml)修改 Spring Boot 日志级别和显示格式等默认配置。 
在 application.properties 中,修改 Spring Boot 日志的默认配置,代码如下。
#日志级别
logging.level.com.atguigu=trace
#使用相对路径的方式设置日志输出的位置(项目根目录目录\my-log\mylog\spring.log)
#logging.file.path=my-log/myLog
#绝对路径方式将日志文件输出到 【项目所在磁盘根目录\springboot\logging\my\spring.log】
logging.file.path=/spring-boot/logging
#控制台日志输出格式
logging.pattern.console=%d{yyyy-MM-dd hh:mm:ss} [%thread] %-5level %logger{50} - %msg%n
#日志文件输出格式
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} === - %msg%n
5)、输出格式:
我们可以通过以下常用日志参数对日志的输出格式进行修改,如下表。
序号
输出格式
说明
1
%d{yyyy-MM-dd HH:mm:ss, SSS} 
日志生产时间,输出到毫秒的时间
2
%-5level 
输出日志级别,-5 表示左对齐并且固定输出 5 个字符,如果不足在右边补 0
3
%logger 或 %c 
logger 的名称
4
 %thread  或 %t
输出当前线程名称
5
%p
日志输出格式
6
%message 或 %msg 或 %m
日志内容,即 logger.info("message")
7
%n
换行符
8
%class 或 %C
输出 Java 类名
9
 %file 或 %F
输出文件名
10
%L
输出错误行号
11
%method 或 %M
输出方法名
12
%l 
输出语句所在的行数, 包括类名、方法名、文件名、行数
13
hostName
本地机器名
14
hostAddress
本地 ip 地址
 
posted on   哲学家小小哲  阅读(362)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示