本篇文章將為大家介紹如何在Springboot項(xiàng)目中實(shí)現(xiàn)保存系統(tǒng)本地日志文件的詳情內(nèi)容,并為大家展示詳細(xì)的步驟過(guò)程,希望本篇文章能夠?qū)Υ蠹业膶W(xué)習(xí)有所幫助!
背景:我們都知道springboot默認(rèn)日志是打印在控制臺(tái)中的,不會(huì)以文件的形式進(jìn)行保存。那么日后系統(tǒng)上線肯定是有需要對(duì)日志進(jìn)行定位分析問(wèn)題的,那么如何實(shí)現(xiàn)將控制臺(tái)輸出的日志保存起來(lái)?
話不多說(shuō),實(shí)際效果如下,如果是你預(yù)期的那樣,咱們接著往下看。
如果最后覺(jué)得有所幫助,請(qǐng)不要吝嗇你的贊,直接pia的點(diǎn)亮就完事了啦,可好;
如下是集成,按步驟來(lái):
1、在項(xiàng)目的resources目錄下創(chuàng)建一個(gè)名為logback-spring.xml的日志配置文件,配置文件名最好跟我一樣;
2、編寫(xiě)xml文件內(nèi)容:
code中每句都給出了注釋?zhuān)奖隳銈兝斫狻?/p>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- 引入默認(rèn)得配置文件 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 模塊名標(biāo)識(shí)日志名稱(chēng) -->
<springProperty scope="context" name="springAppName" source="spring.application.name"/>
<!-- info日志單文件大小限制 -->
<springProperty scope="context" name="logback.fileInfoLog.maxFileSize" source="logback.fileInfoLog.maxFileSize" defaultValue="200MB" />
<!-- info日志最大保留時(shí)長(zhǎng)單位天 -->
<springProperty scope="context" name="logback.fileInfoLog.maxHistory" source="logback.fileInfoLog.maxHistory" defaultValue="15" />
<!-- info日志文件總大小,超過(guò)該大小,舊得即將刪除 -->
<springProperty scope="context" name="logback.fileInfoLog.totalSizeCap" source="logback.fileInfoLog.totalSizeCap" defaultValue="100GB" />
<!-- error日志單文件大小限制 -->
<springProperty scope="context" name="logback.fileErrorLog.maxFileSize" source="logback.fileErrorLog.maxFileSize" defaultValue="200MB" />
<!-- error日志最大保留時(shí)長(zhǎng)單位天 -->
<springProperty scope="context" name="logback.fileErrorLog.maxHistory" source="logback.fileErrorLog.maxHistory" defaultValue="15" />
<!-- error日志文件總大小,超過(guò)該大小,舊得即將刪除 -->
<springProperty scope="context" name="logback.fileErrorLog.totalSizeCap" source="logback.fileErrorLog.totalSizeCap" defaultValue="100GB" />
<!-- http日志單文件大小限制 -->
<springProperty scope="context" name="logback.fileHttpLog.maxFileSize" source="logback.fileHttpLog.maxFileSize" defaultValue="200MB" />
<!-- http日志最大保留時(shí)長(zhǎng)單位天 -->
<springProperty scope="context" name="logback.fileHttpLog.maxHistory" source="logback.fileHttpLog.maxHistory" defaultValue="15" />
<!-- http日志文件總大小,超過(guò)該大小,舊得即將刪除 -->
<springProperty scope="context" name="logback.fileHttpLog.totalSizeCap" source="logback.fileHttpLog.totalSizeCap" defaultValue="100GB" />
<!-- 日志目錄 -->
<springProperty scope="context" name="logback.rootDir" source="logback.rootDir" defaultValue="logs"/>
<!-- 控制臺(tái)輸出得日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="%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}"/>
<!-- 日志文件輸出得日志格式 -->
<property name="FILE_LOG_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %t [%c:%L]-%m%n"/>
<!-- 控制臺(tái)輸出 -->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</layout>
</appender>
<!-- info日志得設(shè)定 -->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${logback.rootDir}/${springAppName}.log</file>
<!--滾動(dòng)策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" >
<!--路徑-->
<fileNamePattern>${logback.rootDir}/%d{yyyy-MM,aux}/%d{yyyy-MM-dd,aux}/${springAppName}-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<maxFileSize>${logback.fileInfoLog.maxFileSize}</maxFileSize>
<maxHistory>${logback.fileInfoLog.maxHistory}</maxHistory>
<totalSizeCap>${logback.fileInfoLog.totalSizeCap}</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
</appender>
<!-- 錯(cuò)誤日志 -->
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
<file>${logback.rootDir}/${springAppName}-error.log</file>
<!--滾動(dòng)策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy" >
<!--路徑-->
<fileNamePattern>${logback.rootDir}/%d{yyyy-MM,aux}/%d{yyyy-MM-dd,aux}/${springAppName}-error-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<maxFileSize>${logback.fileErrorLog.maxFileSize}</maxFileSize>
<maxHistory>${logback.fileErrorLog.maxHistory}</maxHistory>
<totalSizeCap>${logback.fileErrorLog.totalSizeCap}</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
</appender>
<!-- http日志 -->
<appender name="httpInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p %m%n</pattern>
</encoder>
<file>${logback.rootDir}/${springAppName}-http.log</file>
<!--滾動(dòng)策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--路徑-->
<fileNamePattern>${logback.rootDir}/%d{yyyy-MM,aux}/%d{yyyy-MM-dd,aux}/${springAppName}-http-%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
<maxFileSize>${logback.fileHttpLog.maxFileSize}</maxFileSize>
<maxHistory>${logback.fileHttpLog.maxHistory}</maxHistory>
<totalSizeCap>${logback.fileHttpLog.totalSizeCap}</totalSizeCap>
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
</appender>
<appender name="ASYNC_consoleLog" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="consoleLog"/>
</appender>
<appender name="ASYNC_fileInfoLog" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="fileInfoLog"/>
</appender>
<appender name="ASYNC_fileErrorLog" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="fileErrorLog"/>
</appender>
<appender name="ASYNC_httpInfoLog" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="httpInfoLog"/>
</appender>
<root level="info">
<appender-ref ref="ASYNC_consoleLog" />
<appender-ref ref="ASYNC_fileInfoLog" />
<appender-ref ref="ASYNC_fileErrorLog" />
</root>
<logger name="log_http" additivity="false" level="INFO">
<appender-ref ref="ASYNC_httpInfoLog"/>
</logger>
</configuration>
3、配置日志配置中所提到的springAppName;
4、使用這個(gè)默認(rèn)不用配置pom依賴(lài),最新的spring-boot-starter-web中已經(jīng)集成了。如下,重啟下項(xiàng)目就能自動(dòng)生成日志文件了,而且是實(shí)時(shí)寫(xiě)入的,控制臺(tái)輸出什么,立馬就更新進(jìn)到該xxx.log里頭。
記得,配置日志完后,記得刷新下maven或者關(guān)閉下項(xiàng)目重新打開(kāi),以免誤導(dǎo)大家以為日志配置沒(méi)用。
總結(jié):?jiǎn)?dòng)項(xiàng)目,直接將logback-spring.xml文件復(fù)制到resources目錄下就可以實(shí)現(xiàn)日志文件記錄。是不是非常非常方便。
另外:
想要在控制臺(tái)打印sql,如下:
在配置文件中,加上這句就好了;
###sql打印 logging.level.com.system.xiaoma.mapper=debug
以上關(guān)于Springboot項(xiàng)目中如何實(shí)現(xiàn)保存系統(tǒng)本地日志文件的詳細(xì)內(nèi)容就介紹到此結(jié)束了,想要了解更多相關(guān)Springboot日志文件的其他內(nèi)容,請(qǐng)搜索W3Cschool以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,也希望大家以后多多支持!