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

Spring Boot Logback配置日志過(guò)程解析

 更新時(shí)間:2019年10月30日 14:19:55   作者:pdai  
這篇文章主要介紹了Spring Boot Logback配置日志過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Spring Boot Logback配置日志過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

出于性能等原因,Logback 目前是springboot應(yīng)用日志的標(biāo)配; 當(dāng)然有時(shí)候在生產(chǎn)環(huán)境中也會(huì)考慮和三方中間件采用統(tǒng)一處理方式。

配置時(shí)考慮點(diǎn)

  • 支持日志路徑,日志level等配置
  • 日志控制配置通過(guò)application.yml下發(fā)
  • 按天生成日志,當(dāng)天的日志>50MB回滾
  • 最多保存10天日志
  • 生成的日志中Pattern自定義
  • Pattern中添加用戶(hù)自定義的MDC字段,比如用戶(hù)信息(當(dāng)前日志是由哪個(gè)用戶(hù)的請(qǐng)求產(chǎn)生),request信息。此種方式可以通過(guò)AOP切面控制,在MDC中添加requestID,在spring-logback.xml中配置Pattern。
  • 根據(jù)不同的運(yùn)行環(huán)境設(shè)置Profile - dev,test,product
  • 對(duì)控制臺(tái),Err和全量日志分別配置
  • 對(duì)第三方包路徑日志控制

實(shí)現(xiàn)范例

如下兩個(gè)例子基本包含了上述的考慮點(diǎn):

綜合范例

application.yml

logging:
 level:
  root: debug
 path: C:/data/logs/springboot-logback-demo
server:
 port: 8080
spring:
 application:
  name: springboot-logback-demo
debug: false

Spring-logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

  <!-- 日志根目錄-->
  <springProperty scope="context" name="LOG_HOME" source="logging.path" defaultValue="/data/logs/springboot-logback-demo"/>

  <!-- 日志級(jí)別 -->
  <springProperty scope="context" name="LOG_ROOT_LEVEL" source="logging.level.root" defaultValue="DEBUG"/>

  <!-- 標(biāo)識(shí)這個(gè)"STDOUT" 將會(huì)添加到這個(gè)logger -->
  <springProperty scope="context" name="STDOUT" source="log.stdout" defaultValue="STDOUT"/>

  <!-- 日志文件名稱(chēng)-->
  <property name="LOG_PREFIX" value="spring-boot-logback" />

  <!-- 日志文件編碼-->
  <property name="LOG_CHARSET" value="UTF-8" />

  <!-- 日志文件路徑+日期-->
  <property name="LOG_DIR" value="${LOG_HOME}/%d{yyyyMMdd}" />

  <!--對(duì)日志進(jìn)行格式化-->
  <property name="LOG_MSG" value="- | [%X{requestUUID}] | [%d{yyyyMMdd HH:mm:ss.SSS}] | [%level] | [${HOSTNAME}] | [%thread] | [%logger{36}] | --> %msg|%n "/>

  <!--文件大小,默認(rèn)10MB-->
  <property name="MAX_FILE_SIZE" value="50MB" />

  <!-- 配置日志的滾動(dòng)時(shí)間 ,表示只保留最近 10 天的日志-->
  <property name="MAX_HISTORY" value="10"/>

  <!--輸出到控制臺(tái)-->
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <!-- 輸出的日志內(nèi)容格式化-->
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>${LOG_MSG}</pattern>
    </layout>
  </appender>

  <!--輸出到文件-->
  <appender name="0" class="ch.qos.logback.core.rolling.RollingFileAppender">
  </appender>

  <!-- 定義 ALL 日志的輸出方式:-->
  <appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!--日志文件路徑,日志文件名稱(chēng)-->
    <File>${LOG_HOME}/all_${LOG_PREFIX}.log</File>

    <!-- 設(shè)置滾動(dòng)策略,當(dāng)天的日志大小超過(guò) ${MAX_FILE_SIZE} 文件大小時(shí)候,新的內(nèi)容寫(xiě)入新的文件, 默認(rèn)10MB -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

      <!--日志文件路徑,新的 ALL 日志文件名稱(chēng),“ i ” 是個(gè)變量 -->
      <FileNamePattern>${LOG_DIR}/all_${LOG_PREFIX}%i.log</FileNamePattern>

      <!-- 配置日志的滾動(dòng)時(shí)間 ,表示只保留最近 10 天的日志-->
      <MaxHistory>${MAX_HISTORY}</MaxHistory>

      <!--當(dāng)天的日志大小超過(guò) ${MAX_FILE_SIZE} 文件大小時(shí)候,新的內(nèi)容寫(xiě)入新的文件, 默認(rèn)10MB-->
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>

    </rollingPolicy>

    <!-- 輸出的日志內(nèi)容格式化-->
    <layout class="ch.qos.logback.classic.PatternLayout">
      <pattern>${LOG_MSG}</pattern>
    </layout>
  </appender>

  <!-- 定義 ERROR 日志的輸出方式:-->
  <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 下面為配置只輸出error級(jí)別的日志 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <level>ERROR</level>
      <OnMismatch>DENY</OnMismatch>
      <OnMatch>ACCEPT</OnMatch>
    </filter>
    <!--日志文件路徑,日志文件名稱(chēng)-->
    <File>${LOG_HOME}/err_${LOG_PREFIX}.log</File>

    <!-- 設(shè)置滾動(dòng)策略,當(dāng)天的日志大小超過(guò) ${MAX_FILE_SIZE} 文件大小時(shí)候,新的內(nèi)容寫(xiě)入新的文件, 默認(rèn)10MB -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

      <!--日志文件路徑,新的 ERR 日志文件名稱(chēng),“ i ” 是個(gè)變量 -->
      <FileNamePattern>${LOG_DIR}/err_${LOG_PREFIX}%i.log</FileNamePattern>

      <!-- 配置日志的滾動(dòng)時(shí)間 ,表示只保留最近 10 天的日志-->
      <MaxHistory>${MAX_HISTORY}</MaxHistory>

      <!--當(dāng)天的日志大小超過(guò) ${MAX_FILE_SIZE} 文件大小時(shí)候,新的內(nèi)容寫(xiě)入新的文件, 默認(rèn)10MB-->
      <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>

    <!-- 輸出的日志內(nèi)容格式化-->
    <layout class="ch.qos.logback.classic.PatternLayout">
      <Pattern>${LOG_MSG}</Pattern>
    </layout>
  </appender>

  <!-- additivity 設(shè)為false,則logger內(nèi)容不附加至root ,配置以配置包下的所有類(lèi)的日志的打印,級(jí)別是 ERROR-->
  <logger name="org.springframework"   level="ERROR" />
  <logger name="org.apache.commons"   level="ERROR" />
  <logger name="org.apache.zookeeper"  level="ERROR" />
  <logger name="com.alibaba.dubbo.monitor" level="ERROR"/>
  <logger name="com.alibaba.dubbo.remoting" level="ERROR" />

  <!-- ${LOG_ROOT_LEVEL} 日志級(jí)別 -->
  <root level="${LOG_ROOT_LEVEL}">

    <!-- 標(biāo)識(shí)這個(gè)"${STDOUT}"將會(huì)添加到這個(gè)logger -->
    <appender-ref ref="${STDOUT}"/>

    <!-- FILE_ALL 日志輸出添加到 logger -->
    <appender-ref ref="FILE_ALL"/>

    <!-- FILE_ERROR 日志輸出添加到 logger -->
    <appender-ref ref="FILE_ERROR"/>
  </root>

</configuration>

Profile 相關(guān)的配置可以參考:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <include resource="org/springframework/boot/logging/logback/base.xml" />
  
   <!-- roll by day -->
   <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">  
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">  
      <fileNamePattern>logs/springboot-logback-demo.%d{yyyy-MM-dd}.log</fileNamePattern>  
      <maxHistory>30</maxHistory> 
    </rollingPolicy>  
    <encoder>  
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n</pattern>  
    </encoder> 
  </appender> 
  
  <!-- dev -->
  <logger name="org.springframework.web" level="INFO"/>
    <root level="INFO">
    <appender-ref ref="FILE" />
  </root>

  <!-- test or production -->
  <springProfile name="test,prod">
    <logger name="org.springframework.web" level="INFO"/>
    <logger name="com.pdai.springboot" level="INFO"/>
    <root level="INFO">
      <appender-ref ref="FILE" />
    </root>
  </springProfile> 
</configuration>

參考文檔

Logback官網(wǎng)

https://logback.qos.ch/manual/layouts.html#conversionWord

Logback官網(wǎng) 文檔

https://logback.qos.ch/manual/index.html

Logback中Encoder Pattern

<encoder>
  <pattern>%d{HH:mm:ss} [%thread][%X{traceId}] %-5level %logger{36} - %msg%n</pattern>
</encoder>

https://logback.qos.ch/manual/layouts.html#conversionWord

代碼示例

@See  https://github.com/realpdai/springboot-logback-demo

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis-Plus saveBatch()批量保存失效的解決

    Mybatis-Plus saveBatch()批量保存失效的解決

    本文主要介紹了Mybatis-Plus saveBatch()批量保存失效的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • 詳解maven安裝教程以及解決安裝不成功的解決辦法

    詳解maven安裝教程以及解決安裝不成功的解決辦法

    這篇文章主要介紹了詳解maven安裝教程以及解決安裝不成功的解決辦法,詳細(xì)的介紹了幾種解決方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-12-12
  • MyBatis中selectKey標(biāo)簽及主鍵回填實(shí)現(xiàn)

    MyBatis中selectKey標(biāo)簽及主鍵回填實(shí)現(xiàn)

    <selectKey>標(biāo)簽在MyBatis中提供了一種靈活的方式來(lái)生成和回填主鍵,本文就來(lái)介紹一下selectKey標(biāo)簽及主鍵回填實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-12-12
  • Springboot集成RabbitMQ并驗(yàn)證五種消息模型

    Springboot集成RabbitMQ并驗(yàn)證五種消息模型

    RabbitMQ 提供了5種常用消息模型,本文主要介紹了Springboot集成RabbitMQ并驗(yàn)證五種消息模型,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Java生成二維碼可添加logo和文字功能

    Java生成二維碼可添加logo和文字功能

    這篇文章主要介紹了Java生成二維碼可添加logo和文字功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • Java多例Bean的應(yīng)用場(chǎng)景-easyExcel導(dǎo)入

    Java多例Bean的應(yīng)用場(chǎng)景-easyExcel導(dǎo)入

    EasyExcel 是一個(gè)基于 Java 的簡(jiǎn)單、省內(nèi)存的讀寫(xiě) Excel 的開(kāi)源項(xiàng)目。這篇文章主要介紹了用easyExcel導(dǎo)入Java Bean的應(yīng)用場(chǎng)景,感興趣的朋友可以參考閱讀
    2023-04-04
  • Java多線(xiàn)程中Callable和Future的解讀

    Java多線(xiàn)程中Callable和Future的解讀

    這篇文章主要介紹了Java多線(xiàn)程中Callable和Future的解讀,Callable接口類(lèi)似于Runnable,從名字就可以看出來(lái)了,但是Runnable不會(huì)返回結(jié)果,并且無(wú)法拋出返回結(jié)果的異常,而Callable功能更強(qiáng)大一些,被線(xiàn)程執(zhí)行后,可以返回值,這個(gè)返回值可以被Future拿到,需要的朋友可以參考下
    2023-09-09
  • springboot config 攔截器使用方法實(shí)例詳解

    springboot config 攔截器使用方法實(shí)例詳解

    本文介紹Spring-Boot中使用攔截器的相關(guān)知識(shí),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2018-05-05
  • SpringBoot使用Quartz無(wú)法注入Bean的問(wèn)題及解決

    SpringBoot使用Quartz無(wú)法注入Bean的問(wèn)題及解決

    這篇文章主要介紹了SpringBoot使用Quartz無(wú)法注入Bean的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java圖形用戶(hù)界面之列表框

    Java圖形用戶(hù)界面之列表框

    列表框通過(guò)Swing組件JList產(chǎn)生,其總是在屏幕上占據(jù)固定行數(shù)的空間。這篇文章主要介紹了java圖形用戶(hù)界面之列表框的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10

最新評(píng)論

安阳市| 衡阳县| 巩留县| 庆安县| 资溪县| 光泽县| 鞍山市| 台湾省| 陇川县| 滨州市| 西畴县| 于都县| 河津市| 兴海县| 夏津县| 抚州市| 拜城县| 安多县| 青铜峡市| 如皋市| 铁力市| 临潭县| 鄂温| 耒阳市| 霍城县| 临安市| 大埔县| 临沭县| 泰州市| 兴安县| 武清区| 潮安县| 杨浦区| 临武县| 翁牛特旗| 云梦县| 翼城县| 宿州市| 洪湖市| 陈巴尔虎旗| 阿巴嘎旗|