Logback 輸出 JPA SQL日志 到文件


Logback 輸出 JPA SQL日志 到文件

使用Spring Boot 配置 JPA 時可以指定如下配置在控制台查看執行的SQL語句

spring.jpa.show-sql=true

Spring Boot 默認的日志配置不會輸出到文件,若要打印日志到文件,可以使用如下配置:

llogging.level后跟要打印日志的包名或類的全限定名,設置打印級別

日志級別:TRACE < DEBUG < INFO < WARN < ERROR < FATAL

logging.level.com.example=INFO

配置日志文件的名稱,可以使用絕對路徑和相對路徑

logging.file=test.log

設置日志目錄,默認在目錄下生成 spring.log

logging.path=

其他如格式等配置請查官方文檔

一般在生產上,需要將項目日志進行分類,錯誤日志單獨打印,業務日志等。

在使用 JPA 的時候,spring.jpa.show-sql=true可以在控制台看到SQL語句,但是無法打印到日志,試了很多種方法都沒用生效,后來在stackoverflow發現以下配置可行:
輸出Hibernate SQL 到日志

<!--輸出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

<!--輸出到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>logback.%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>

<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>ERROR</level>
    </filter>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>error.%d{yyyy-MM-dd}.log</fileNamePattern>
    </rollingPolicy>
    <encoder>
        <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
</appender>


   <!-- 1. 輸出SQL 到控制台和文件-->
 <logger name="org.hibernate.SQL" additivity="false" >
    <level value="DEBUG" />
    <appender-ref ref="file" />
    <appender-ref ref="console" />
</logger>

   <!-- 2. 輸出SQL 的參數到控制台和文件-->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" additivity="false" level="TRACE" >
    <level value="TRACE" />
    <appender-ref ref="file" />
    <appender-ref ref="console" />
</logger>
<!--<logger name="org.hibernate.type" additivity="false" >-->
    <!--<level value="TRACE" />-->
    <!--<appender-ref ref="file" />-->
    <!--<appender-ref ref="console" />-->
<!--</logger>-->

<root level="info">
    <appender-ref ref="console" />
    <appender-ref ref="file" />
</root>

推薦使用 方案1,2一起打印SQL和參數,相關日志會少點。

logback 中 logger 標簽參數作用:name:指定打印日志的包或類,additivity: 是否向上傳遞日志,level 打印日志級別,appender-ref :使用哪種打印機制

說明一下 additivity屬性,logback 日志打印有一個根節點也就是上面的 標簽,一般情況下不指定additivity的情況為true ,也就是向上傳遞日志

作者:帶着天使反上帝
來源:CSDN
原文:https://blog.csdn.net/sinat_25295611/article/details/81073011
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

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



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