SpringBoot之SpringBoot整合logback


SpringBoot之SpringBoot整合logback

添加Maven依賴

  logback的依賴不需要單獨添加,在添加web場景啟動器的時候已經通過依賴傳遞,導入了

  

開始配置

在resource下新建log文件夾,並且在其中創建logback.xml

 

 logback.xml

<configuration>
    <!--本文主要輸出日志為控制台日志,系統日志,sql日志,異常日志-->
    <!-- %m輸出的信息,%p日志級別,%t線程名,%d日期,%c類的全名,,,, -->
    <!--控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d %p (%file:%line\)- %m%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--系統info級別日志-->
    <!--<File> 日志目錄,沒有會自動創建-->
    <!--<rollingPolicy>日志策略,每天簡歷一個日志文件,或者當天日志文件超過64MB時-->
    <!--encoder 日志編碼及輸出格式-->
    <appender name="fileLog"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>log/file/fileLog.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>log/file/fileLog.log.%d.%i</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- or whenever the file size reaches 64 MB -->
                <maxFileSize>64 MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>
                %d %p (%file:%line\)- %m%n
            </pattern>
            <charset>UTF-8</charset>
            <!-- 此處設置字符集 -->
        </encoder>
    </appender>

    <!--sql日志-->
    <appender name="sqlFile"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>log/sql/sqlFile.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>log/sql/sqlFile.log.%d.%i</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- or whenever the file size reaches 64 MB -->
                <maxFileSize>64 MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!--對記錄事件進行格式化。負責兩件事,一是把日志信息轉換成字節數組,二是把字節數組寫入到輸出流。-->
        <encoder>
            <!--用來設置日志的輸入格式-->
            <pattern>
                %d %p (%file:%line\)- %m%n
            </pattern>
            <charset>UTF-8</charset>
            <!-- 此處設置字符集 -->
        </encoder>
    </appender>


    <!--異常日志-->
    <appender name="errorFile"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>log/error/errorFile.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>log/error/errorFile.%d.log.%i</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- or whenever the file size reaches 64 MB -->
                <maxFileSize>64 MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!--對記錄事件進行格式化。負責兩件事,一是把日志信息轉換成字節數組,二是把字節數組寫入到輸出流。-->
        <encoder>
            <!--用來設置日志的輸入格式-->
            <pattern>
                %d %p (%file:%line\)- %m%n
            </pattern>
            <charset>UTF-8</charset>
            <!-- 此處設置字符集 -->
        </encoder>
        <!--
            日志都在這里 過濾出 error
            使用 try {}catch (Exception e){} 的話異常無法寫入日志,可以在catch里用logger.error()方法手動寫入日志
            -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>
    <!--  日志輸出級別 -->
    <!--All\DEBUG\INFO\WARN\ERROR\FATAL\OFF-->
    <!--打印info級別日志,分別在控制台,fileLog,errorFile輸出
        異常日志在上面由過濾器過濾出ERROR日志打印
    -->
    <root level="INFO">
        <appender-ref ref="fileLog" />
        <appender-ref ref="console" />
        <appender-ref ref="errorFile" />
    </root>

    <!--打印sql至sqlFile文件日志-->
    <logger name="com.springboot.demo.mapper" level="DEBUG" additivity="false">
        <appender-ref ref="console" />
        <appender-ref ref="sqlFile" />
    </logger>
</configuration>

添加配置在application.yml

logging:
  # 設置logback.xml位置
  config: classpath:log/logback.xml

編寫代碼

  在服務類上添加@Slf4j

 

這個注解是lombok的,所以在使用的時候需要先集成lombok,如果不知道如何集成的小伙伴可以看一下我的《SpringBoot之SpringBoot整合lombok

在方法中就可以直接使用log日志對象了

 

 大括號代表傳入參數的意思,log.info方法的第二個參數是不定長參數可以無限傳入,但是建議不到太多

啟動項目測試:

訪問成功

看一下控制台

 

 成功打印

本來我以為是在resource/log下 創建那三個文件夾並存放日志文件呢,找了半天沒找到,后來 發現 logback是在項目的根路勁下創建了文件夾和文件,並存入了日志

 

 比如我剛才訪問的地址輸出的 彼岸舞 也存放到了里面,接下來 我訪問一下Mapper中的方法

訪問的時候報錯了

 

那么看一下,有沒有記錄到error中呢

 

 記錄了,其實fileLog.log中也是有記錄的,為什么會報錯呢,因為之前我把數據庫連接改了,導致連接的數據庫不對,改回來重新啟動測試

 

 訪問成功,查看一下日志,但是我發現他並沒有往日志中記錄Sql的日志,為什么呢?我丟...找了半天發現集成的東西太多了,走的是jdbcTemplate的代碼,沒有走mybatis的所以沒有打印

重新訪問user2接口

 

 查看日志

 

 可以看到日志已經被添加到sqlFile.sql中

作者:彼岸舞

時間:2021\01\26

內容關於:SpringBoot

本文來源於網絡,只做技術分享,一概不負任何責任


免責聲明!

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



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