SpringBoot使用默认的日志logback(2)—自定义配置+控制台输出sql语句

本文详细介绍了如何在SpringBoot项目中自定义日志配置,包括使用logback-spring.xml、log4j2.xml以及控制台输出SQL的方法,特别提到了使用带-spring后缀的配置文件以利用SpringBoot高级功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接:https://www.longkui.site/program/java/logback-log4j2/5331/

上一篇文章中简单介绍了springboot通过系统配置的方式配置日志:

SpringBoot使用默认的日志logback(1)—系统配置

这篇文章简单介绍一下日志的自定义配置。

1.自定义配置
spring boot官方推荐的日志配置如下:

日志系统 配置
logback logback-spring.xml、logback-spring.groov、logbak.xml、logbak.groovy
log4j2 log4j2-spring.xml、log4j2.xml
JDK(Java Util Logging) logging.properties
上面是spring boot官方文档的提示内容,意思是:根据您的日志记录系统,将加载相应的文件使用。即如果我们使用logback日志框架,那么可以使用logback-spring.xml、logback-spring.groovy、logback.xml、logback.groovy之一作为配置文件来加载。

spring boot官方建议使用logback-spring.xml作为logback框架的日志配置文件(例如:使用logback-spring.xml而不是logback.xml),因为带-spring后缀的配置文件可以使用spring boot提供的一些高级功能,如profile多环境日志输出。

我们加入日志配置的方式

server:
port: 8082

spring配置

spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver

mybaits配置

mybatis:

配置mapper的扫描,找到所有的mapper.xml映射文件

mapper-locations: classpath*:mappers/**/*Mapper.xml

搜索指定包别名

type-aliases-package: site.longkui.**.entity

日志配置 (系统配置)

#logging:

pattern: #配置日志输出格式

file: “%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} === - %msg%n”

file: #配置日志输出的文件

path: log1234 #日志输出的位置,默认是项目的根目录,会自动生成文件夹,而且默认状态日志名字都叫spring.log

level: # 配置输出日志级别

root: debug #设置整个项目的日志输出级别默认info(root表示整个项目)

site.longkui.app.mapper: INFO

日志配置

logging:
config: classpath:logback-config.xml #自定义日志配置文件
然后配置logback-spring.xml。配置位置在 src/main/resources。创建文件内容如下:

<?xml version="1.0" encoding="utf-8" ?> ${CONSOLE_LOG_PATTERN} --%logger{50} --- %msg %n --> D:\idea\logs\example-logging.log D:\idea\logs\example-logging-%d{yyyy-MM-dd}-%i.log 10MB 7 20GB ${FILE_LOG_PATTERN} 上面的xml文件,是简单配置文件。

下面这篇文章会详细解释log4j2.xml文件配置。

2.控制台输出sql
编写程序时,经常需要输出sql,如果是系统配置日志的方式,只要参考上一篇文章,SpringBoot使用默认的日志logback(1)—系统配置 – 每天进步一点点 (longkui.site)

把root设置为debug即可。

这篇文章中自定义方式,设置下面的方式即可。

注意,这个地方的logger的name要设置成自己项目的mapper,level=DEBUG。

这时,重新运行程序后,就可以在控制台打印出sql了。

<think>首先,用户的问题是:在SpringBoot项目中配置日志输出,以便在控制台查看日志SQL语句。具体是如何配置控制台日志输出并显示SQL语句。 根据系统级指令: - 所有行内数学表达式必须使用$...$格式,但这里没有数学表达式,所以可能不需要。 - 独立公式必须使用$$...$$,但同样,这里可能不涉及。 - LaTeX语法正确,但内容主要是配置,不是数学。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。参考引用是[^1],但引用内容是Mybatis相关的,用户的问题是SpringBoot配置日志,所以我需要检查是否相关。 参考引用是:"Mybatis 开启控制台打印sql语句。<dependency> ... </dependency> [^1]"。这似乎是关于Mybatis Plus的依赖,用户的问题是SpringBoot配置日志输出SQL语句SpringBoot默认使用Logback或Log4j等日志框架,而SQL语句输出通常与ORM框架如MyBatis或Hibernate相关。 用户指定了:"我想在SpringBoot项目中配置日志输出,以便在控制台查看日志SQL语句"。所以,我需要提供如何配置SpringBoot日志来显示SQL语句。 在SpringBoot中,显示SQL语句通常涉及: 1. 配置日志级别为DEBUG或TRACE,以便输出SQL语句2. 对于特定的ORM框架,如MyBatis或Hibernate,需要设置相应的logger。 引用[^1]是关于Mybatis Plus的,所以可能相关。用户提到了"参考站内引用:引用[1]:... [^1]",并说"上述引用仅供参考",所以我应该考虑它。 用户说:"请尽可能多的参考用户上一次的问题和你的回答",但在这个对话中,这是第一个消息,所以没有上一个问题。我需要基于当前信息。 回答结构: - 结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 步骤: 1. 解释如何配置日志级别在SpringBoot中。 2. 针对SQL语句输出,说明如何为特定包设置日志级别。 3. 可能涉及application.properties或application.yml文件的配置。 4. 如果使用MyBatis Plus,参考引用中的依赖。 引用[^1]是:"Mybatis 开启控制台打印sql语句。<dependency> ... </dependency> [^1]",它显示了一个依赖,但用户的问题是配置日志输出,而不是添加依赖。添加依赖可能是前提条件。 在SpringBoot中,显示SQL语句的常见方式: - 对于Hibernate:设置日志级别为org.hibernate.SQL=DEBUG - 对于MyBatis:设置日志级别为org.mybatis.spring=DEBUG或更具体的mapper包。 引用提到了Mybatis Plus,所以可能用户在使用Mybatis Plus。 因此,回答应该包括: - 添加必要的依赖(如果使用Mybatis Plus)。 - 配置application.properties来设置日志级别。 - 示例代码。 生成相关问题:在回答末尾,添加§§相关问题§§部分,列出2-3个相关问题。 引用标识:在回答中,如果引用特定内容,添加[^1]。引用[^1]是给定的,所以我可以在回答中引用它,但内容是关于Mybatis Plus的依赖。 用户说:"引用[1]:Mybatis 开启控制台打印sql语句。<dependency> ... </dependency> [^1]",所以我可以直接使用这个引用。 回答结构: 1. 介绍:SpringBoot使用Logback作为默认日志框架,配置日志级别可以输出SQL语句2. 步骤: - 添加依赖(如果需要)。 - 配置application.properties。 - 设置特定logger的级别。 3. 示例配置。 4. 验证方法。 5. 相关问题。 使用中文回答。 具体配置- 在application.properties中: - 设置日志级别:logging.level.root=INFO - 对于SQL:logging.level.org.hibernate.SQL=DEBUG(如果使用Hibernate) - 对于MyBatis:logging.level.com.example.mapper=DEBUG(替换为实际mapper包) - 或者更一般:logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG(对于JDBC) 如果使用Mybatis Plus,引用[^1]提供了依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.1</version> </dependency> ``` 但用户可能已经添加了,所以配置日志是关键。 在Mybatis Plus中,显示SQL语句可以通过设置日志级别为DEBUG到mapper包。 所以,回答: - 添加Mybatis Plus依赖(如果尚未添加)。 - 配置日志级别。 引用[^1]末尾有[^1],所以我在回答中可以说"如引用[^1]所示"。 完整回答:</think>### SpringBoot 配置控制台日志输出显示SQL语句SpringBoot项目中,配置日志输出以在控制台查看日志SQL语句,主要涉及设置日志级别和指定相关logger。SpringBoot默认使用Logback作为日志框架,通过简单的配置文件即可实现。以下是逐步配置方法,确保您能实时查看SQL执行详情(适用于MyBatis/MyBatis Plus等ORM框架)[^1]。 #### 步骤1: 添加必要的依赖(如果使用MyBatis Plus) 如果您的项目使用MyBatis Plus(如引用[^1]所示),需确保`pom.xml`中包含以下依赖(版本可根据需要调整): ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.1</version> </dependency> ``` 如果已添加或使用其他ORM(如Hibernate),可跳过此步。 #### 步骤2: 配置日志级别 在`application.properties`或`application.yml`文件中设置日志级别。关键是将SQL相关logger的级别设为`DEBUG`,以输出SQL语句- **使用`application.properties`文件**: ```properties # 设置根日志级别(可选,默认为INFO) logging.level.root=INFO # 针对MyBatis/MyBatis Plus:设置mapper接口包路径为DEBUG logging.level.com.yourpackage.mapper=DEBUG # 针对JDBC SQL输出(通用配置) logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG logging.level.org.springframework.jdbc.core.StatementCreatorUtils=TRACE ``` 替换`com.yourpackage.mapper`为您的实际Mapper接口包名。 - **使用`application.yml`文件**(推荐,更简洁): ```yaml logging: level: root: INFO com.yourpackage.mapper: DEBUG # MyBatis Mapper包路径 org.springframework.jdbc.core.JdbcTemplate: DEBUG # 输出SQL语句 org.springframework.jdbc.core.StatementCreatorUtils: TRACE # 输出参数细节 ``` #### 步骤3: 验证配置 1. 启动SpringBoot应用,控制台输出SQL日志2. 示例输出: ``` 2023-10-05 12:00:00 DEBUG com.yourpackage.mapper.UserMapper.selectById - ==> Preparing: SELECT * FROM user WHERE id = ? 2023-10-05 12:00:00 DEBUG com.yourpackage.mapper.UserMapper.selectById - ==> Parameters: 1(Integer) ``` - `Preparing`显示SQL语句- `Parameters`显示绑定参数值。 #### 注意事项 - **为什么需要DEBUG级别**:SQL语句通常在DEBUG级别输出,TRACE级别可能显示更细节(如参数类型)。 - **性能影响**:生产环境建议关闭DEBUG日志,避免日志过多影响性能。 - **其他ORM框架**: - Hibernate:设置`logging.level.org.hibernate.SQL=DEBUG` - JPA:设置`logging.level.org.hibernate.SQL=DEBUG` - **日志格式定制**:可在`application.properties`中添加`logging.pattern.console`自定义输出格式,例如: ```properties logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger{36} - %msg%n ``` 通过以上配置,您可以在开发时轻松监控SQL执行,帮助调试和优化数据库操作[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值