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">
<!--定義日志文件的存儲地址 ,這個使用的是相對路徑,即在日志文件存放在項(xiàng)目根路徑logs文件夾下-->
<property name="LOG_HOME" value="log/" />
<property name="all-logger" value="all-logger" />
<!-- 控制臺輸出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%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:級別從左顯示5個字符寬度%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>
<!-- 日志輸出級別 ,一定要把上邊定義的appender 寫在下面否者會導(dǎo)致日志文件生成不了,或者為空的日志文件-->
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="${all-logger}" />
</root>
</configuration>四、測試類
因?yàn)樽詭У娜罩痉绞?,所以可以直接使用注解,@slf4j, 這樣就方便很多

啟動項(xiàng)目
控制臺:

日志:

五、常見問題:
1、mybatis 的sql 日志無法打印
那是因?yàn)榇_實(shí)打印的指定的包,因?yàn)槲覀冃枰蛴∷邪膕ql,所以直接配置一個最大的包
<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>
這樣就會打印結(jié)果集的全部明細(xì),日志量會異常龐大,一般我們只需要打印INFO級別就可以了。
六、日志按照業(yè)務(wù)類別打印不同文件
1、logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<!--定義日志文件的存儲地址 ,這個使用的是相對路徑,即在日志文件存放在項(xiàng)目根路徑logs文件夾下-->
<property name="LOG_HOME" value="log" />
<!-- 控制臺輸出 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%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:級別從左顯示5個字符寬度%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:級別從左顯示5個字符寬度%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>
<!-- 日志輸出級別 ,一定要把上邊定義的appender 寫在下面否者會導(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需要的模板,只有配置了工廠獲取才會生效。
3、啟動項(xiàng)目
控制臺

alllogger 文件

taskaction 文件

可以看到控制臺并沒有打印 自定義的業(yè)務(wù)日志,如果要打印,需要在自定義工廠里面加上控制臺輸出。
<!--業(yè)務(wù)操作日志, logger的配置就是LoggerFactory需要的模板,只有配置了工廠獲取才會生效。-->
<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>再次啟動項(xiàng)目

4、注解 + logger.getname 一起用
因?yàn)樽⒔夥绞酱蛴〉木褪悄J(rèn)的日志文件,但是我們?nèi)绻€要打印任務(wù)日志怎么辦呢,這時就可以結(jié)合使用。
測試類

啟動項(xiàng)目。
控制臺

allaction默認(rèn)日志

taskaction

到此這篇關(guān)于springboot整合logback打印日志,分文件的文章就介紹到這了,更多相關(guān)springboot logback打印日志內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring aop+反射實(shí)現(xiàn)電話號加密
線上項(xiàng)目涉及大量查詢接口中,存在電話號明文展示不合規(guī)的問題。如果對每個接口返回結(jié)果中電話號相關(guān)字段修改相關(guān)代碼邏輯,則工作量較大花費(fèi)時間多。因此設(shè)計電話號加密注解,減少工作量。2021-06-06
Java輸出通過InetAddress獲得的IP地址數(shù)組詳細(xì)解析
由于byte被認(rèn)為是unsigned byte,所以最高位的1將會被解釋為符號位,另外Java中存儲是按照補(bǔ)碼存儲,所以1000 0111會被認(rèn)為是補(bǔ)碼形式,轉(zhuǎn)換成原碼便是1111 0001,轉(zhuǎn)換成十進(jìn)制數(shù)便是-1212013-09-09
Spring security如何重寫Filter實(shí)現(xiàn)json登錄
這篇文章主要介紹了Spring security 如何重寫Filter實(shí)現(xiàn)json登錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
lombok注解@Data使用在繼承類上時出現(xiàn)警告的問題及解決
Lombok的@Data注解簡化了實(shí)體類代碼,但在子類中使用時會出現(xiàn)警告,指出equals和hashCode方法不會考慮父類屬性,解決方法有兩種:一是在父類上使用@EqualsAndHashCode(callSuper=true)注解;二是通過配置lombok.config文件,均能有效解決警告問題2024-10-10
解決springboot項(xiàng)目啟動報錯Field xxxMapper in com...xx
這篇文章主要介紹了解決springboot項(xiàng)目啟動報錯Field xxxMapper in com...xxxContr問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12

