springboot打印sql日志的若干方式

一. jpa方式

spring:
  jpa:
    database: MYSQL
    show-sql: true
    hibernate:
      ddl-auto: none
    properties:
      hibernate:
        format_sql: false

如果你沒用JPA怎么辦队魏?接著往下看

二. druid方式

  1. 引入阿里巴巴的druid包
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid-spring-boot-starter</artifactId>
  <version>${druid.version}</version>
</dependency>
  1. 配置連接池和監(jiān)控
logging:
  level:
    druid.sql.Statement: DEBUG  ## 這是druid能打印sql日志的前提,必須設(shè)置為debug等級(jí)
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://mysql-dev.database:3306/dynamic-target?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: 123456
    druid:
      db-type: mysql
      filter:
        stat:
          enabled: true
          db-type: mysql
          log-slow-sql: true
          slow-sql-millis: 2000
          merge-sql: false
        slf4j:
          enabled: true
          statement-log-enabled: true
          statement-executable-sql-log-enable: true
      web-stat-filter:
        enabled: true
      stat-view-servlet:
        enabled: true
        url-pattern: "/druid/*"
        login-username: admin
        login-password: 666666
日志量有點(diǎn)多

但是感覺打印出來的看起來~真的是又臭又長(zhǎng)。饲宿。。

三. mybatis-plus 整合 p6spy方式

  1. 引入依賴jar包
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>${mybatis-plus.version}</version>
</dependency>

<dependency>
  <groupId>p6spy</groupId>
  <artifactId>p6spy</artifactId>
  <version>${p6spy.version}</version>
</dependency>
  1. 修改application.yml配置
spring:
  datasource:
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver  # 把jdbc驅(qū)動(dòng)換成p6spy
    ## 修改url  jdbc:p6spy:mysql
    url: jdbc:p6spy:mysql://mysql-dev.database:3306/dynamic-target?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false 
    username: root
    password: 123456
  1. 在resource目錄下添加spy.properties配置文件
#mybatis 3.2.1以上使用
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
#mybatis 3.2.1以下使用或者不配置
#modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定義日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志輸出到控制臺(tái)
#appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系統(tǒng)記錄 sql
appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 設(shè)置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前綴
useprefix=true
# 配置記錄 Log 例外,可去掉的結(jié)果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 實(shí)際驅(qū)動(dòng)可多個(gè)
driverlist=com.mysql.cj.jdbc.Driver
# 是否開啟慢SQL記錄
outagedetection=true
# 慢SQL記錄標(biāo)準(zhǔn) 2 秒
outagedetectioninterval=2

附錄:

  • spy.properties
# 指定應(yīng)用的日志攔截模塊,默認(rèn)為com.p6spy.engine.spy.P6SpyFactory 
#modulelist=com.p6spy.engine.spy.P6SpyFactory,com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory

# 真實(shí)JDBC driver , 多個(gè)以 逗號(hào) 分割 默認(rèn)為空
#driverlist=

# 是否自動(dòng)刷新 默認(rèn) flase
#autoflush=false

# 配置SimpleDateFormat日期格式 默認(rèn)為空
#dateformat=

# 打印堆棧跟蹤信息 默認(rèn)flase
#stacktrace=false

# 如果 stacktrace=true胆描,則可以指定具體的類名來進(jìn)行過濾瘫想。
#stacktraceclass=

# 監(jiān)測(cè)屬性配置文件是否進(jìn)行重新加載
#reloadproperties=false

# 屬性配置文件重新加載的時(shí)間間隔,單位:秒 默認(rèn)60s
#reloadpropertiesinterval=60

# 指定 Log 的 appender昌讲,取值:
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
#appender=com.p6spy.engine.spy.appender.StdoutLogger
#appender=com.p6spy.engine.spy.appender.FileLogger

# 指定 Log 的文件名 默認(rèn) spy.log
#logfile=spy.log

# 指定是否每次是增加 Log国夜,設(shè)置為 false 則每次都會(huì)先進(jìn)行清空 默認(rèn)true
#append=true

# 指定日志輸出樣式  默認(rèn)為com.p6spy.engine.spy.appender.SingleLineFormat , 單行輸出 不格式化語(yǔ)句
#logMessageFormat=com.p6spy.engine.spy.appender.SingleLineFormat
# 也可以采用  com.p6spy.engine.spy.appender.CustomLineFormat 來自定義輸出樣式, 默認(rèn)值是%(currentTime)|%(executionTime)|%(category)|connection%(connectionId)|%(sqlSingleLine)
# 可用的變量為:
#   %(connectionId)            connection id
#   %(currentTime)             當(dāng)前時(shí)間
#   %(executionTime)           執(zhí)行耗時(shí)
#   %(category)                執(zhí)行分組
#   %(effectiveSql)            提交的SQL 換行
#   %(effectiveSqlSingleLine)  提交的SQL 不換行顯示
#   %(sql)                     執(zhí)行的真實(shí)SQL語(yǔ)句,已替換占位
#   %(sqlSingleLine)           執(zhí)行的真實(shí)SQL語(yǔ)句短绸,已替換占位 不換行顯示
#customLogMessageFormat=%(currentTime)|%(executionTime)|%(category)|connection%(connectionId)|%(sqlSingleLine)

# date類型字段記錄日志時(shí)使用的日期格式 默認(rèn)dd-MMM-yy
#databaseDialectDateFormat=dd-MMM-yy

# boolean類型字段記錄日志時(shí)使用的日期格式 默認(rèn)boolean 可選值numeric
#databaseDialectBooleanFormat=boolean

# 是否通過jmx暴露屬性 默認(rèn)true
#jmx=true

# 如果jmx設(shè)置為true 指定通過jmx暴露屬性時(shí)的前綴 默認(rèn)為空
# com.p6spy(.<jmxPrefix>)?:name=<optionsClassName>
#jmxPrefix=

# 是否顯示納秒 默認(rèn)false
#useNanoTime=false

# 實(shí)際數(shù)據(jù)源 JNDI
#realdatasource=/RealMySqlDS
# 實(shí)際數(shù)據(jù)源 datasource class
#realdatasourceclass=com.mysql.jdbc.jdbc2.optional.MysqlDataSource

# 實(shí)際數(shù)據(jù)源所攜帶的配置參數(shù) 以 k=v 方式指定 以 分號(hào) 分割
#realdatasourceproperties=port;3306,serverName;myhost,databaseName;jbossdb,foo;bar

# jndi數(shù)據(jù)源配置 
# 設(shè)置 JNDI 數(shù)據(jù)源的 NamingContextFactory车吹。 
#jndicontextfactory=org.jnp.interfaces.NamingContextFactory
# 設(shè)置 JNDI 數(shù)據(jù)源的提供者的 URL。 
#jndicontextproviderurl=localhost:1099
# 設(shè)置 JNDI 數(shù)據(jù)源的一些定制信息醋闭,以分號(hào)分隔窄驹。 
#jndicontextcustom=java.naming.factory.url.pkgs;org.jboss.naming:org.jnp.interfaces

# 是否開啟日志過濾 默認(rèn)false, 這項(xiàng)配置是否生效前提是配置了 include/exclude/sqlexpression
#filter=false

# 過濾 Log 時(shí)所包含的表名列表证逻,以逗號(hào)分隔 默認(rèn)為空
#include=
# 過濾 Log 時(shí)所排除的表名列表乐埠,以逗號(hào)分隔 默認(rèn)為空
#exclude=

# 過濾 Log 時(shí)的 SQL 正則表達(dá)式名稱  默認(rèn)為空
#sqlexpression=

#顯示指定過濾 Log 時(shí)排隊(duì)的分類列表,取值: error, info, batch, debug, statement,
#commit, rollback, result and resultset are valid values
# (默認(rèn) info,debug,result,resultset,batch)
#excludecategories=info,debug,result,resultset,batch

# 是否過濾二進(jìn)制字段
# (default is false)
#excludebinary=false

# P6Log 模塊執(zhí)行時(shí)間設(shè)置囚企,整數(shù)值 (以毫秒為單位)丈咐,只有當(dāng)超過這個(gè)時(shí)間才進(jìn)行記錄 Log。 默認(rèn)為0
#executionThreshold=

# P6Outage 模塊是否記錄較長(zhǎng)時(shí)間運(yùn)行的語(yǔ)句 默認(rèn)false
# outagedetection=true|false
# P6Outage 模塊執(zhí)行時(shí)間設(shè)置龙宏,整數(shù)值 (以秒為單位))园骆,只有當(dāng)超過這個(gè)時(shí)間才進(jìn)行記錄 Log捏萍。 默認(rèn)30s
# outagedetectioninterval=integer time (seconds)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市荧止,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異厨姚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)键菱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門谬墙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人经备,你說我怎么就攤上這事拭抬。” “怎么了侵蒙?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵造虎,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我纷闺,道長(zhǎng)算凿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任犁功,我火速辦了婚禮氓轰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘浸卦。我一直安慰自己署鸡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布限嫌。 她就那樣靜靜地躺著靴庆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪怒医。 梳的紋絲不亂的頭發(fā)上炉抒,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音裆熙,去河邊找鬼端礼。 笑死禽笑,一個(gè)胖子當(dāng)著我的面吹牛入录,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播佳镜,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼僚稿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蟀伸?” 一聲冷哼從身側(cè)響起蚀同,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤缅刽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蠢络,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衰猛,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年刹孔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了啡省。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡髓霞,死狀恐怖卦睹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情方库,我是刑警寧澤结序,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站纵潦,受9級(jí)特大地震影響徐鹤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜邀层,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一凳干、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧被济,春花似錦救赐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至钮追,卻和暖如春预厌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背元媚。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工轧叽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刊棕。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓炭晒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親甥角。 傳聞我的和親對(duì)象是個(gè)殘疾皇子网严,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345