最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何修改覆蓋spring boot默認日志策略logback詳解

 更新時間:2018年10月14日 14:18:23   作者:Ryan.Miao  
這篇文章主要給大家介紹了關(guān)于如何修改覆蓋spring boot默認日志策略logback的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧

背景

Spring Boot在所有內(nèi)部日志中使用Commons Logging,但是默認配置也提供了對常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每種Logger都可以通過配置使用控制臺或者文件輸出日志內(nèi)容。

默認日志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)則是在運行時決定的——它提供了各類日志框架的binding。

Logback是log4j框架的作者開發(fā)的新一代日志框架,它效率更高、能夠適應(yīng)諸多的運行環(huán)境,同時天然支持SLF4J。

默認情況下,Spring Boot會用Logback來記錄日志,并用INFO級別輸出到控制臺。在運行應(yīng)用程序和其他例子時,你應(yīng)該已經(jīng)看到很多INFO級別的日志了。

springboot初始化了日志的默認實現(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

可以指定日志文件名,覆蓋默認的pattern,指定不同日志級別。

但依舊有很多局限性。比如,默認的文件方案是:

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

 <appender name="FILE"
  class="ch.qos.logback.core.rolling.RollingFileAppender">
  <encoder>
   <pattern>${FILE_LOG_PATTERN}</pattern>
  </encoder>
  <file>${LOG_FILE}</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
   <fileNamePattern>${LOG_FILE}.%i</fileNamePattern>
  </rollingPolicy>
  <triggeringPolicy
   class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
   <MaxFileSize>10MB</MaxFileSize>
  </triggeringPolicy>
 </appender>

只是超過10m就生成一個新文件。而我們還遇到過日志把磁盤打滿的情況??隙ㄐ枰〞r清理,還想要按照日期生成文件。這樣,僅僅配置文件是不夠的,需要我們自己定義。

自定義

實現(xiàn)自定義就是在resource下新增logback-spring.xml, 然后編寫我們的配置方案。就是完全跳過spring的默認配置了。但我又想偷懶,還想用spring的配置,但只是修改個別,比如file。

spring默認配置文件 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

我們只要

<include resource="org/springframework/boot/logging/logback/base.xml"/>

就可以拿過來直接用。

最初我也是這樣做的,但后面發(fā)現(xiàn)有些東西是不能覆蓋的。比如內(nèi)置的日志文件名,所以,最后把base里的內(nèi)容單獨抽離出來用了。

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">

 <springProperty scope="context" name="appName" source="spring.application.name"
 defaultValue="application"/>
 <springProperty scope="context" name="log.path" source="logging.path"
 defaultValue="logs"/>
 <springProperty scope="context" name="logstashurl" source="logstash.url"
 defaultValue="localhost:4560"/>

 <!--<include resource="org/springframework/boot/logging/logback/base.xml"/>-->
 <include resource="org/springframework/boot/logging/logback/defaults.xml" />
 <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
 <include resource="org/springframework/boot/logging/logback/console-appender.xml" />

 <!--輸出到文件-->
 <appender name="TIME_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
 <!--<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
 <!-- <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.log</fileNamePattern>-->
 <!-- <maxHistory>7</maxHistory>-->
 <!--</rollingPolicy>-->
 <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  <!-- daily rollover -->
  <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  <maxHistory>7</maxHistory>
  <maxFileSize>100MB</maxFileSize>
  <totalSizeCap>1GB</totalSizeCap>
 </rollingPolicy>
 <encoder>
  <!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ${appName} %X{req.remoteHost} %X{req.requestURI} %X{req.userAgent} %X{req.method} - [%thread] %-5level %logger{36} - %msg%n</pattern>-->
  <pattern>${FILE_LOG_PATTERN}</pattern>
 </encoder>
 </appender>

 <!-- 輸出到logstash-->
 <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
 <destination>${logstashurl}</destination>
 <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"/>
 </appender>

 <root level="INFO">
 <appender-ref ref="CONSOLE"/>
 <appender-ref ref="TIME_FILE"/>
 </root>


 <springProfile name="dev">
 <logger name="com.test.demo.mapper" level="DEBUG">
 </logger>
 </springProfile>
 <springProfile name="local, test, prod">
 <root level="warn">
  <appender-ref ref="LOGSTASH"/>
 </root>
 </springProfile>
</configuration>

同時,需要讀取配置文件, 配置文件依舊生效

logging:
 path: logs
 file: ${logging.path}/${spring.application.name}

這里,include拿到spring默認配置,但移除了base里的root配置,去掉了file。并自定義file。file規(guī)則是保存7天,每100m分一個文件,總大小不超過1G。

 <springProperty scope="context" name="appName" source="spring.application.name"
 defaultValue="application"/>
 <springProperty scope="context" name="log.path" source="logging.path"
 defaultValue="logs"/>
 <springProperty scope="context" name="logstashurl" source="logstash.url"
 defaultValue="localhost:4560"/>

這一塊配置并沒有使用,只是放這里備份。logback里想要使用spring的配置文件的變量,只能通過這種方式讀取。因為我配置了logstash,需要讀取logstash的url,所以這樣做。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Java中do-while循環(huán)的使用方法及注意事項詳解

    Java中do-while循環(huán)的使用方法及注意事項詳解

    這篇文章主要介紹了Java中do-while循環(huán)的使用方法及注意事項的相關(guān)資料,在Java編程中,do-while循環(huán)是一種基本的循環(huán)控制結(jié)構(gòu),它至少執(zhí)行一次循環(huán)體,然后根據(jù)條件判斷是否繼續(xù),文中將用法介紹的非常詳細,需要的朋友可以參考下
    2024-10-10
  • Java由淺入深細數(shù)數(shù)組的操作下

    Java由淺入深細數(shù)數(shù)組的操作下

    數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當然不同語言對數(shù)組的實現(xiàn)及處理也不盡相同。Java?語言中提供的數(shù)組是用來存儲固定大小的同類型元素
    2022-04-04
  • Spring如何正確注入集合類型

    Spring如何正確注入集合類型

    這篇文章主要介紹了Spring如何正確注入集合類型,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • MyBatis使用<foreach>標簽like查詢報錯解決問題

    MyBatis使用<foreach>標簽like查詢報錯解決問題

    這篇文章主要介紹了MyBatis使用<foreach>標簽like查詢報錯解決問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Java中的位運算符號解讀(&、|、^、~、<<、>>、>>>)

    Java中的位運算符號解讀(&、|、^、~、<<、>>、>>>)

    這篇文章主要介紹了Java中的位運算符號(&、|、^、~、<<、>>、>>>),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java線程隊列LinkedBlockingQueue的使用

    Java線程隊列LinkedBlockingQueue的使用

    本文主要介紹了Java線程隊列LinkedBlockingQueue的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2023-06-06
  • Java?超詳細帶你掌握矩陣的運算

    Java?超詳細帶你掌握矩陣的運算

    在學(xué)習機器學(xué)習算法時,發(fā)現(xiàn)運用java?來實現(xiàn)有些算法代碼時,會有很大困難,其中有一點就是?java?本身并沒有矩陣運算的?api,所以進行要實現(xiàn)矩陣運算就尤其復(fù)雜,讓我們一起了解矩陣的運算
    2022-03-03
  • idea構(gòu)建web項目的超級詳細教程

    idea構(gòu)建web項目的超級詳細教程

    好多朋友在使用IDEA創(chuàng)建項目時,總會碰到一些小問題,下面這篇文章主要給大家介紹了關(guān)于idea構(gòu)建web項目的超級詳細教程,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-03-03
  • 詳解如何Java中實現(xiàn)Excel的注釋和批注

    詳解如何Java中實現(xiàn)Excel的注釋和批注

    注釋及批注是?Excel?中比較常用的功能,這篇文章主要為大家詳細介紹了如何在Java中實現(xiàn)Excel的注釋和批注,感興趣的小伙伴可以跟隨小編一起學(xué)習一下
    2023-12-12
  • Java?電話號碼的組合示例詳解

    Java?電話號碼的組合示例詳解

    這篇文章主要介紹了Java?電話號碼的組合,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03

最新評論

长治市| 若尔盖县| 葵青区| 石阡县| 呼图壁县| 东丽区| 阿荣旗| 龙泉市| 睢宁县| 武义县| 普洱| 宜君县| 武定县| 仁怀市| 松滋市| 泌阳县| 望奎县| 手机| 德江县| 芮城县| 蒙自县| 申扎县| 兖州市| 浮山县| 华亭县| 屏南县| 临泽县| 家居| 浠水县| 海兴县| 施秉县| 鞍山市| 简阳市| 张家口市| 苏尼特左旗| 澄江县| 涿州市| 岫岩| 浦东新区| 华宁县| 舞阳县|