這篇文章主要介紹了怎么修改覆蓋spring boot默認(rèn)日志策略logback,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、永登網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為永登等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。Spring Boot在所有內(nèi)部日志中使用Commons Logging,但是默認(rèn)配置也提供了對常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每種Logger都可以通過配置使用控制臺或者文件輸出日志內(nèi)容。
默認(rèn)日志Logback
SLF4J——Simple Logging Facade For Java,它是一個針對于各類Java日志框架的統(tǒng)一Facade抽象。Java日志框架眾多——常用的有java.util.logging, log4j, logback,commons-logging, Spring框架使用的是Jakarta Commons Logging API (JCL)。而SLF4J定義了統(tǒng)一的日志抽象接口,而真正的日志實現(xiàn)則是在運(yùn)行時決定的——它提供了各類日志框架的binding。
Logback是log4j框架的作者開發(fā)的新一代日志框架,它效率更高、能夠適應(yīng)諸多的運(yùn)行環(huán)境,同時天然支持SLF4J。
默認(rèn)情況下,Spring Boot會用Logback來記錄日志,并用INFO級別輸出到控制臺。在運(yùn)行應(yīng)用程序和其他例子時,你應(yīng)該已經(jīng)看到很多INFO級別的日志了。
springboot初始化了日志的默認(rèn)實現(xiàn),只要我們在配置文件添加對應(yīng)的配置即可。
比如
logging: file: logs/application-debug.log pattern: console: "%d %-5level %logger : %msg%n" file: "%d %-5level [%thread] %logger : %msg%n" level: org.springframework.web: ERROR com.howtodoinjava: INFO org.hibernate: ERROR
可以指定日志文件名,覆蓋默認(rèn)的pattern,指定不同日志級別。
但依舊有很多局限性。比如,默認(rèn)的文件方案是:
E:\maven\repository\org\springframework\boot\spring-boot\1.5.13.RELEASE\spring-boot-1.5.13.RELEASE.jar!\org\springframework\boot\logging\logback\file-appender.xml
${FILE_LOG_PATTERN} ${LOG_FILE} ${LOG_FILE}.%i 10MB
只是超過10m就生成一個新文件。而我們還遇到過日志把磁盤打滿的情況??隙ㄐ枰〞r清理,還想要按照日期生成文件。這樣,僅僅配置文件是不夠的,需要我們自己定義。
自定義
實現(xiàn)自定義就是在resource下新增logback-spring.xml, 然后編寫我們的配置方案。就是完全跳過spring的默認(rèn)配置了。但我又想偷懶,還想用spring的配置,但只是修改個別,比如file。
spring默認(rèn)配置文件 E:\maven\repository\org\springframework\boot\spring-boot\1.5.13.RELEASE\spring-boot-1.5.13.RELEASE.jar!\org\springframework\boot\logging\logback\base.xml
我們只要
就可以拿過來直接用。
最初我也是這樣做的,但后面發(fā)現(xiàn)有些東西是不能覆蓋的。比如內(nèi)置的日志文件名,所以,最后把base里的內(nèi)容單獨(dú)抽離出來用了。
logback-spring.xml
${LOG_FILE}.%d{yyyy-MM-dd}.%i.log 7 100MB 1GB ${FILE_LOG_PATTERN} ${logstashurl}
同時,需要讀取配置文件, 配置文件依舊生效
logging: path: logs file: ${logging.path}/${spring.application.name}
這里,include拿到spring默認(rèn)配置,但移除了base里的root配置,去掉了file。并自定義file。file規(guī)則是保存7天,每100m分一個文件,總大小不超過1G。
這一塊配置并沒有使用,只是放這里備份。logback里想要使用spring的配置文件的變量,只能通過這種方式讀取。因為我配置了logstash,需要讀取logstash的url,所以這樣做。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“怎么修改覆蓋spring boot默認(rèn)日志策略logback”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!