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
本文來源於網絡,只做技術分享,一概不負任何責任
