天天看點

log4jdbc使用詳情

log4jdbc使用詳情

    • 前言
    • 開始

前言

使用mybatis列印sql日志資訊時參數部分總是以“?”代替,每次還要自己對參數,過于麻煩。

開始

maven依賴

<!-- log4jdbc -->
<dependency>
    <groupId>com.googlecode.log4jdbc</groupId>
    <artifactId>log4jdbc</artifactId>
    <version>1.2</version>
    <scope>runtime</scope>
</dependency>
           

修改yml配置檔案

原:

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8
           

改:

spring:
  datasource:
    driver-class-name: net.sf.log4jdbc.DriverSpy
    url: jdbc:log4jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8
           

日志檔案修改

logback.xml 類型:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <logger name="jdbc.connection" additivity="false" level="FATAL">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </logger>
    <logger name="jdbc.resultset" additivity="false" level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </logger>
    <logger name="jdbc.audit" additivity="false" level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </logger>
    <logger name="jdbc.sqlonly" additivity="false" level="DEBUG">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </logger>
    <logger name="jdbc.sqltiming" additivity="false" level="DEBUG">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </logger>
</configuration>
           

log4j.xml 類型:

<!-- log4j.xml -->
<logger name="jdbc.sqlonly" level="WARN"/>  
<logger name="jdbc.sqltiming" level="INFO"/>  
<logger name="jdbc.resultsettable" level="INFO"/>  
<logger name="jdbc.resultset" level="WARN"/>  
<logger name="jdbc.connection" level="WARN"/>  
<logger name="jdbc.audit" level="WARN"/>

<!-- 根據需要關閉不必要的日志輸出 -->
<logger name="jdbc.connection" level="OFF" />
<logger name="jdbc.audit" level="OFF" />
<logger name="jdbc.resultset" level="OFF" />
<logger name="jdbc.sqlonly" level="OFF" />
<logger name="jdbc.sqltiming" level="INFO" />
<logger name="jdbc.resultsettable" level="INFO"/>
           

log4j.properties 類型:

# 記錄系統執行過的sql語句
#log4j.additivity.jdbc.sqlonly=true
log4j.logger.jdbc.sqlonly=DEBUG,console
# 控制台輸出
log4j.appender.console=org.apache.log4j.ConsoleAppender 
# 控制台輸出格式定義 
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n%n
# 記錄sql執行的時間,可以分析耗時的sql語句
#log4j.additivity.jdbc.sqltiming=true
#log4j.logger.jdbc.sqltiming=INFO,console  
# 記錄除了ResultSet外的所有JDBC調用情況,一般不需要
#log4j.additivity.jdbc.audidt=true
#log4j.logger.jdbc.audit=INFO,console
# 記錄傳回結果集資訊
#log4j.additivity.jdbc.resultset=true
#log4j.logger.jdbc.resultset=INFO,console
# 記錄資料庫連接配接和釋放資訊,可記錄目前的資料庫連接配接數,便于診斷連接配接是否釋放
#log4j.additivity.jdbc.connection=true
#log4j.logger.jdbc.connection=INFO,console
           
#成功之後的日志
2020-08-11 11:33:43.613 [pool-3-thread-3] DEBUG org.hibernate.SQL - 
select * from user where userId='479fd5d1-d086-430d-8ccd-f022b5278d1'