spring boot 集成mybatis使用logback打印並保存日志信息


spring boot 打印執行的sql語句

最近在學習spring boot 整合了Mybatis和druid之后總感覺少點什么東西,看了下在別的項目上用的框架,發現自己整合的東西不打印sql語句,網上找了好多方法,多半都是在application.properties 中增加配置,發現好像都沒有什么作用,最后找到了正確方法。特進行記錄
1.項目結構圖
這里寫圖片描述
2.由於spring boot 默認集成了logback所以直接在resources中創建logback.xml文件即可

<?xml version="1.0" encoding="UTF-8"?>
<configuration >
    <!-- 彩色日志 -->
    <!-- 彩色日志依賴的渲染類 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%logger){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
    <!--包名輸出縮進對齊-->
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />


    <contextName>fanxlxs</contextName>

    <!--文件夾在當前項目磁盤根目錄-->
    <property name="LOG_PATH" value="/modellog" />
    <!--設置系統日志目錄-->
    <property name="APPDIR" value="logs" />

    <!-- 日志記錄器,日期滾動記錄 ERROR 級別 -->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${LOG_PATH}/${APPDIR}/model_repatile.log</file>
        <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日志文件的路徑,例如今天是1992-11-06日志,當前寫的日志文件路徑為file節點指定, 可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。 而1992-11-06的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${LOG_PATH}/${APPDIR}/error/model_repatile-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過10MB,若超過10MB,日志文件會以索引0開始, 命名日志文件,例如log-error-1992-11-06.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 追加方式記錄日志 -->
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%thread] %logger Line:%-3L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件記錄error級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <!-- 日志記錄器,日期滾動記錄 WARN 級別 -->
    <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${LOG_PATH}/${APPDIR}/model_repatile_warn.log</file>
        <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日志文件的路徑,例如今天1992-11-06日志,當前寫的日志文件路徑為file節點指定, 可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。 而1992-11-06的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${LOG_PATH}/${APPDIR}/warn/model_repatile-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過10MB,若超過10MB,日志文件會以索引0開始, 命名日志文件,例如log-warn-1992-11-06.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 追加方式記錄日志 -->
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%thread] %logger Line:%-3L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件只記錄warn級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <!-- 日志記錄器,日期滾動記錄 INFO 級別 -->
    <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${LOG_PATH}/${APPDIR}/model_repatile_ginfo.log</file>
        <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日志文件的路徑,例如今天是1992-11-06日志,當前寫的日志文件路徑為file節點指定, 可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。 而1992-11-06的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${LOG_PATH}/${APPDIR}/info/model_repatile-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過10MB,若超過10MB,日志文件會以索引0開始, 命名日志文件,例如log-info-1992-11-06.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 追加方式記錄日志 -->
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%thread] %logger Line:%-3L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件只記錄info級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <!-- 日志記錄器,日期滾動記錄 DEBUG 級別 -->
    <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在記錄的日志文件的路徑及文件名 -->
        <file>${LOG_PATH}/${APPDIR}/model_repatile_debug.log</file>
        <!-- 日志記錄器的滾動策略,按日期,按大小記錄 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 歸檔的日志文件的路徑,例如今天是1992-11-06日志,當前寫的日志文件路徑為file節點指定, 可以將此文件與file指定文件路徑設置為不同路徑,從而將當前日志文件或歸檔日志文件置不同的目錄。 而1992-11-06的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 -->
            <fileNamePattern>${LOG_PATH}/${APPDIR}/debug/model_repatile-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 除按日志記錄之外,還配置了日志文件不能超過10MB,若超過10MB,日志文件會以索引0開始, 命名日志文件,例如log-debug-1992-11-06.0.log -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!-- 追加方式記錄日志 -->
        <append>true</append>
        <!-- 日志文件的格式 -->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level --- [%thread] %logger Line:%-3L - %msg%n</pattern>
            <charset>utf-8</charset>
        </encoder>
        <!-- 此日志文件只記錄debug級別的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debug</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- ConsoleAppender 控制台輸出日志 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!--encoder 默認配置為PatternLayoutEncoder-->
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
            <!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level -&#45;&#45; [%thread] %logger Line:%-3L - %msg%n</pattern>-->
            <charset>utf-8</charset>
        </encoder>
        <!--此日志appender是為開發使用,只配置最底級別,控制台輸出的日志級別是大於或等於此級別的日志信息-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>debug</level>
        </filter>
    </appender>

    <!-- FrameworkServlet日志-->
    <logger name="org.springframework" level="WARN" />

    <!-- mybatis日志打印-->
    <logger name="org.apache.ibatis" level="DEBUG" />
    <logger name="java.sql" level="DEBUG" />

    <!-- 項目 mapper 路徑 console控制台顯示sql語句:STDOUT.filter.level -> debug級別 -->
    <logger name="com.limit.mapper" level="DEBUG"></logger>

    <!-- 生產環境下,將此級別配置為適合的級別,以免日志文件太多或影響程序性能 -->
    <root level="INFO">
        <appender-ref ref="ERROR" />
        <appender-ref ref="WARN" />
        <appender-ref ref="INFO" />
        <appender-ref ref="DEBUG" />
        <!-- 生產環境將請stdout去掉 -->
        <appender-ref ref="STDOUT" />
    </root>

</configuration>

3.sql已經打印出來了,保存的日志文件在項目所在盤符的根目錄上
這里寫圖片描述

4.最近在試着用idea寫項目所以eclicpse 彩色代碼沒有進行測試,如果不需要使用可以將,彩色日志部分刪除或者注釋即可,另外想使用彩色日志可以使用sts(集成了spring 工具的ide 和eclipse 沒有本質區別),在啟動類向右鍵run as ->spring boot app即可,感興趣的可以試試給個連接 官網連接 這個連接下的比較慢,在附個百度雲連接吧
https://pan.baidu.com/s/15qZPmsWAmBvqS3jucbk9Hg 密碼 yf2d


免責聲明!

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



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