Springboot+JPA打印SQL日志過程
更新時間:2025年08月07日 08:36:39 作者:左邊的天堂
文章說明在Spring?Boot項目中配置Lombok插件、application.yml和logback.xml,以實現(xiàn)從前端接收活動名稱參數(shù),并輸出SQL語句及查詢參數(shù)用于調(diào)試
Springboot+JPA打印SQL日志
pom.xml 添加lombox插件
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
application.yml 配置
# Spring
spring:
#配置 Jpa
jpa:
show-sql: true #打印執(zhí)行的sql語句,false則不打印sql
properties:
hibernate:
ddl-auto: none
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
open-in-view: true
logback.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志存放路徑 -->
<property name="log.path" value="/home/logs" />
<!-- 日志輸出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} %-5level %logger{20}:%line - %msg%n" />
<!-- 控制臺輸出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系統(tǒng)日志輸出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/run-info.log</file>
<!-- 循環(huán)政策:基于時間創(chuàng)建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/run-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的歷史 10天 -->
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 過濾的級別 -->
<level>INFO</level>
<!-- 匹配時的操作:接收(記錄) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配時的操作:拒絕(不記錄) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/run-error.log</file>
<!-- 循環(huán)政策:基于時間創(chuàng)建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/run-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的歷史 60天 -->
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 過濾的級別 -->
<level>ERROR</level>
<!-- 匹配時的操作:接收(記錄) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配時的操作:拒絕(不記錄) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 系統(tǒng)模塊日志級別控制,可根據(jù)實際情況修改 -->
<logger name="com.test" level="info" />
<!-- Spring日志級別控制 -->
<logger name="org.springframework" level="warn" />
<!-- JPA日志級別控制,必須這樣配置 -->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="org.hibernate.SQL" level="info" />
<logger name="org.hibernate.engine.QueryParameters" level="info" />
<!--系統(tǒng)操作日志-->
<root level="info">
<appender-ref ref="console" />
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
</root>
</configuration>
效果
Hibernate: select bizactivit0_.id as id1_0_, bizactivit0_.code as code2_0_, bizactivit0_.content as content3_0_, bizactivit0_.create_time as create_t4_0_, bizactivit0_.creator as creator5_0_, bizactivit0_.enabled as enabled6_0_, bizactivit0_.end_time as end_time7_0_, bizactivit0_.name as name13_0_, bizactivit0_.sort as sort16_0_, bizactivit0_.start_time as start_t17_0_, bizactivit0_.status as status18_0_ from biz_activity bizactivit0_ where bizactivit0_.name like ? order by bizactivit0_.id desc limit ? 11:48:38.169 TRACE o.h.t.d.s.BasicBinder:64 - binding parameter [1] as [VARCHAR] - [%活動名稱%]
活動名稱 是從前端傳過來的值,可以看到sql語句和查詢參數(shù)
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java基礎(chǔ)之finally語句與return語句詳解
這篇文章主要介紹了Java基礎(chǔ)之finally語句與return語句詳解,文中有非常詳細的代碼示例,對正在學習java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
IDEA2024下安裝kubernetes插件配置進行使用的方法
IDEA中默認已安裝Kubernetes插件,若未發(fā)現(xiàn),可在市場下載,安裝后,需準備config文件和kubectl.exe,進行路徑配置,可在Workloads-prod下查看和下載目標容器日志,本文介紹IDEA2024下安裝kubernetes插件并配置進行使用,感興趣的朋友一起看看吧2024-11-11
Java實現(xiàn)經(jīng)典捕魚達人游戲的示例代碼
《捕魚達人》是一款以深海狩獵為題材的休閑競技游戲。本文將利用Java實現(xiàn)這一經(jīng)典的游戲,文中采用了swing技術(shù)進行了界面化處理,需要的可以參考一下2022-02-02
Java SpringBoot快速集成SpringBootAdmin管控臺監(jiān)控服務(wù)詳解
這篇文章主要介紹了如何基于springboot-admin管控臺監(jiān)控服務(wù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2021-09-09
Classloader隔離技術(shù)在業(yè)務(wù)監(jiān)控中的應(yīng)用詳解
這篇文章主要為大家介紹了Classloader隔離技術(shù)在業(yè)務(wù)監(jiān)控中的應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08

