springboot整合logback打印日志,分文件
前言:
接著上面實(shí)戰(zhàn)03講,這次我們采用springboot自帶的日志打印方式-logback 來打印日志
一、pom.xml配置
因?yàn)槭莝pringboot自帶的日志方式,所以不需要添加依賴
二、application.yml 配置
因?yàn)槭莝pringboot自帶的日志方式,所以不需要添加logback.xml 路徑,當(dāng)然如果你非要加也可以
logging: config: classpath:logback.xml
三、logback.xml 配置
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="true"> <!--定義日志文件的存儲(chǔ)地址 ,這個(gè)使用的是相對(duì)路徑,即在日志文件存放在項(xiàng)目根路徑logs文件夾下--> <property name="LOG_HOME" value="log/" /> <property name="all-logger" value="all-logger" /> <!-- 控制臺(tái)輸出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息,%n是換行符--> <!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>--> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p] [%t] [%-40.40logger{39}] : %m%n</pattern> </encoder> </appender> <!-- 按照每天生成日志文件 --> <appender name="${all-logger}" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/all-logger.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件輸出的文件名--> <FileNamePattern>${LOG_HOME}/${all-logger}.log.%d{yyyy-MM-dd}.%i</FileNamePattern> <!--日志文件保留天數(shù)--> <MaxHistory>30</MaxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>250MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息,%n是換行符--> <!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>--> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p] [%t] [%-40.40logger{39}] : %m%n</pattern> <charset>utf8</charset> </encoder> </appender> <logger name="com.example.demo" level="DEBUG" ></logger> <!-- 日志輸出級(jí)別 ,一定要把上邊定義的appender 寫在下面否者會(huì)導(dǎo)致日志文件生成不了,或者為空的日志文件--> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="${all-logger}" /> </root> </configuration>
四、測試類
因?yàn)樽詭У娜罩痉绞?,所以可以直接使用注解,@slf4j, 這樣就方便很多
啟動(dòng)項(xiàng)目
控制臺(tái):
日志:
五、常見問題:
1、mybatis 的sql 日志無法打印
那是因?yàn)榇_實(shí)打印的指定的包,因?yàn)槲覀冃枰蛴∷邪膕ql,所以直接配置一個(gè)最大的包
<logger name="com.example.demo" level="DEBUG" ></logger>
2、mybatis 打印了sql的結(jié)果集明細(xì)
那是因?yàn)槿罩净緦懗闪薲ubug
<root level="DEBUG"> <appender-ref ref="STDOUT" /> <appender-ref ref="${all-logger}" /> </root>
這樣就會(huì)打印結(jié)果集的全部明細(xì),日志量會(huì)異常龐大,一般我們只需要打印INFO級(jí)別就可以了。
六、日志按照業(yè)務(wù)類別打印不同文件
1、logback.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="true"> <!--定義日志文件的存儲(chǔ)地址 ,這個(gè)使用的是相對(duì)路徑,即在日志文件存放在項(xiàng)目根路徑logs文件夾下--> <property name="LOG_HOME" value="log" /> <!-- 控制臺(tái)輸出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息,%n是換行符--> <!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>--> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p] [%t] [%-40.40logger{39}] : %m%n</pattern> </encoder> </appender> <!-- 按照每天生成日志文件 --> <appender name="ALLACTIONAPPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/alllogger.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件輸出的文件名--> <FileNamePattern>${LOG_HOME}/alllogger.log.%d{yyyy-MM-dd}.%i</FileNamePattern> <!--日志文件保留天數(shù)--> <MaxHistory>30</MaxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>250MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息,%n是換行符--> <!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>--> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p] [%t] [%-40.40logger{39}] : %m%n</pattern> <charset>utf8</charset> </encoder> </appender> <appender name="TASKACTIONAPPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_HOME}/taskaction.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件輸出的文件名--> <FileNamePattern>${LOG_HOME}/taskaction.log.%d{yyyy-MM-dd}.%i</FileNamePattern> <!--日志文件保留天數(shù)--> <MaxHistory>30</MaxHistory> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>250MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息,%n是換行符--> <!-- <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>--> <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%p] [%t] [%-40.40logger{39}] : %m%n</pattern> <charset>utf8</charset> </encoder> </appender> <logger name="com.example.demo" level="DEBUG" > </logger> <!-- 日志輸出級(jí)別 ,一定要把上邊定義的appender 寫在下面否者會(huì)導(dǎo)致日志文件生成不了,或者為空的日志文件--> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="ALLACTIONAPPENDER" /> </root> <!--業(yè)務(wù)操作日志--> <logger name="TASKACTION" level="info" additivity="false"> <appender-ref ref="TASKACTIONAPPENDER"/> </logger> <logger name="ALLACTION" level="info" additivity="false"> <appender-ref ref="ALLACTIONAPPENDER"/> </logger> </configuration>
ALLACTION 打印默認(rèn)的日志,
TASKACTION 打印任務(wù)類型的日志
2、測試類
直接通過logger name 來打印自定義的業(yè)務(wù)日志, logger的配置就是LoggerFactory需要的模板,只有配置了工廠獲取才會(huì)生效。
3、啟動(dòng)項(xiàng)目
控制臺(tái)
alllogger 文件
taskaction 文件
可以看到控制臺(tái)并沒有打印 自定義的業(yè)務(wù)日志,如果要打印,需要在自定義工廠里面加上控制臺(tái)輸出。
<!--業(yè)務(wù)操作日志, logger的配置就是LoggerFactory需要的模板,只有配置了工廠獲取才會(huì)生效。--> <logger name="TASKACTION" level="info" additivity="false"> <appender-ref ref="STDOUT" /> <appender-ref ref="TASKACTIONAPPENDER"/> </logger> <logger name="ALLACTION" level="info" additivity="false"> <appender-ref ref="STDOUT" /> <appender-ref ref="ALLACTIONAPPENDER"/> </logger>
再次啟動(dòng)項(xiàng)目
4、注解 + logger.getname 一起用
因?yàn)樽⒔夥绞酱蛴〉木褪悄J(rèn)的日志文件,但是我們?nèi)绻€要打印任務(wù)日志怎么辦呢,這時(shí)就可以結(jié)合使用。
測試類
啟動(dòng)項(xiàng)目。
控制臺(tái)
allaction默認(rèn)日志
taskaction
到此這篇關(guān)于springboot整合logback打印日志,分文件的文章就介紹到這了,更多相關(guān)springboot logback打印日志內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- spring?boot常見get?、post請(qǐng)求參數(shù)處理、參數(shù)注解校驗(yàn)、參數(shù)自定義注解校驗(yàn)問題解析
- SpringBoot如何獲取Get請(qǐng)求參數(shù)詳解
- springBoot 過濾器去除請(qǐng)求參數(shù)前后空格實(shí)例詳解
- springboot如何設(shè)置請(qǐng)求參數(shù)長度和文件大小限制
- Springboot2.x 使用 Log4j2 異步打印日志的實(shí)現(xiàn)
- Spring Boot配置AOP打印日志的全過程
- Spring Boot項(xiàng)目中如何對(duì)接口請(qǐng)求參數(shù)打印日志
相關(guān)文章
Java使用 try-with-resources 實(shí)現(xiàn)自動(dòng)關(guān)閉資源的方法
這篇文章主要介紹了Java使用 try-with-resources 實(shí)現(xiàn)自動(dòng)關(guān)閉資源的方法,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06基于Java語言開發(fā)的一個(gè)高效的敏感詞過濾工具
這篇文章主要為大家詳細(xì)介紹了如何基于Java語言開發(fā)的一個(gè)高效的敏感詞過濾工具,文中的示例代碼簡潔易懂,有需要的小伙伴可以參考一下2025-01-01spring使用@Async注解導(dǎo)致循環(huán)依賴問題異常的排查記錄
這篇文章主要介紹了spring使用@Async注解導(dǎo)致循環(huán)依賴問題異常的排查記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08