JPA 使用log4j2輸出SQL日志到文件


上一篇介紹了 JPA 使用llogback輸出SQL日志到文件, 這篇我們使用log4j:

還使用上節的單元測試代碼 :先修改一下POM:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <!-- 排除自帶的logback依賴 -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

通常的log4j2的配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>

        <!--這個輸出控制台的配置-->
        <console name="Console" target="SYSTEM_OUT">
            <!--輸出日志的格式-->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t{2}] %-5level %logger{4} - %msg%n"/>
        </console>
        <!-- 這個會打印出所有的info及以下級別的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面並進行壓縮,作為存檔-->
        <RollingFile name="RollingFileInfo" fileName="logs/cis-mr-audit.log"
                     filePattern="logs/$${date:yyyy-MM}/cis-mr-audit-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="5 MB"/>
            </Policies>
        </RollingFile>

    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console" />
            <AppenderRef ref="RollingFileInfo" />
        </Root>
    </Loggers>
</Configuration>

注意,這里沒有對每一個的appender設置level,統一使用root的level.

 

和上節一樣,如果yml文件沒有特殊配置的話,也是輸出不了sql的。

即使加了show-sql也只是在console中顯示,在日志文件中不顯示。

同上節的配置樣,問題出在org.hibernate.sql和org.hibernate.type.descriptor.sql.BasicBinder上

修改yml配置文件:

logging:
  level:
    root: info
    org:
      hibernate:
        SQL: debug   #debug時顯示sql
        type:
          descriptor:
            sql:
              BasicBinder: trace  #trace時,顯示參數

這樣console與文件中的sql就都可以顯示了,在生產切換日志級別,只需要修改yml文件即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM