<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SpringBoot 實現(xiàn)整合log4j2日志

          共 10971字,需瀏覽 22分鐘

           ·

          2021-06-07 08:17

          點擊上方藍色字體,選擇“標星公眾號”

          優(yōu)質(zhì)文章,第一時間送達

            作者 |  orginly

          來源 |  urlify.cn/2M3mQn

          關(guān)于日志級別

          共有8個級別,按照從低到高為:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.

          1. All:最低等級的,用于打開所有日志記錄.

          2. Trace:是追蹤,就是程序推進以下,你就可以寫個trace輸出,所以trace應(yīng)該會特別多,不過沒關(guān)系,我們可以設(shè)置最低日志級別不讓他輸出.

          3. Debug:指出細粒度信息事件對調(diào)試應(yīng)用程序是非常有幫助的.

          4. Info:消息在粗粒度級別上突出強調(diào)應(yīng)用程序的運行過程.

          5. Warn:輸出警告及warn以下級別的日志.

          6. Error:輸出錯誤信息日志.

          7. Fatal:輸出每個嚴重的錯誤事件將會導致應(yīng)用程序的退出的日志.

          8. OFF:最高等級的,用于關(guān)閉所有日志記錄.

          程序會打印高于或等于所設(shè)置級別的日志,設(shè)置的日志等級越高,打印出來的日志就越少。

          排除 spring-boot 自帶的 logback 依賴

          因為多個日志組件在一起的話會產(chǎn)生沖突 需要排除 spring-boot 自帶的 logback 依賴
          pom.xml中原有的spring-boot-web 依賴中添加 exclusion標簽

          <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
           <exclusions>
            <exclusion>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
           </exclusions>
          </dependency>

          添加 log4j2 依賴

          不需要設(shè)置版本 會自動跟具當前 spring-boot 版本進行匹配

          <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-log4j2</artifactId>
          </dependency>

          配置文件節(jié)點解析

          根節(jié)點Configuration

          有兩個屬性:status 和 monitorinterval ,有兩個子節(jié)點:Appenders和Loggers(表明可以定義多個Appender和Logger)

          status: 用來指定log4j本身的打印日志的級別.
          monitorinterval: 用于指定log4j自動重新配置的監(jiān)測間隔時間,單位是s,最小是5s

          Appenders節(jié)點

          常見的有三種子節(jié)點:Console、RollingFile、File.

          Console節(jié)點用來定義輸出到控制臺的Appender.

          name: 指定Appender的名字.

          target:SYSTEM_OUT 或 SYSTEM_ERR,一般只設(shè)置默認:SYSTEM_OUT.

          PatternLayout: 輸出格式,不設(shè)置默認為:%m%n.

          File節(jié)點用來定義輸出到指定位置的文件的Appender.

          name: 指定Appender的名字.
          fileName: 指定輸出日志的目的文件帶全路徑的文件名.
          PatternLayout: 輸出格式,不設(shè)置默認為:%m%n.

          RollingFile節(jié)點用來定義超過指定大小自動刪除舊的創(chuàng)建新的的Appender.

          name: 指定Appender的名字.
          fileName: 指定輸出日志的目的文件帶全路徑的文件名.
          PatternLayout: 輸出格式,不設(shè)置默認為:%m%n.
          filePattern: 指定新建日志文件的名稱格式.
          Policies: 指定滾動日志的策略,就是什么時候進行新建日志文件輸出日志.
          TimeBasedTriggeringPolicy:Policies子節(jié)點,基于時間的滾動策略,interval屬性用來指定多久滾動一次,默認是1 hour。  modulate=true用來調(diào)整時間:比如現(xiàn)在是早上3am,interval是4,那么第一次滾動是在4am,接著是8am,12am…而不是7am.
          SizeBasedTriggeringPolicy:Policies子節(jié)點,基于指定文件大小的滾動策略,size屬性用來定義每個日志文件的大小.
          DefaultRolloverStrategy: 用來指定同一個文件夾下最多有幾個日志文件時開始刪除最舊的,創(chuàng)建新的(通過max屬性)。

          Loggers節(jié)點

          常見的有兩種:Root和Logger.

          Root節(jié)點

          用來指定項目的根日志,如果沒有單獨指定Logger,那么就會默認使用該Root日志輸出

          level:日志輸出級別,共有8個級別,按照從低到高為:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
          AppenderRef:Root的子節(jié)點,用來指定該日志輸出到哪個Appender.

          Logger節(jié)點

          用來單獨指定日志的形式,比如要為指定包下的class指定不同的日志級別等。

          level:日志輸出級別,共有8個級別,按照從低到高為:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.
          name:用來指定該Logger所適用的類或者類所在的包全路徑,繼承自Root節(jié)點.
          AppenderRef:Logger的子節(jié)點,用來指定該日志輸出到哪個Appender,如果沒有指定,就會默認繼承自Root.如果指定了,那么會在指定的這個Appender和Root的Appender中都會輸出,此時我們可以設(shè)置Logger的additivity="false"只在自定義的Appender中進行輸出。

          配置 log4j2

          將配置 log4j2.xml 配置文件放在 resource 目錄中
          例如以下完整的日志配置文件

          <?xml version="1.0" encoding="UTF-8"?>
          <!--日志級別以及優(yōu)先級排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
          <!--Configuration后面的status,這個用于設(shè)置log4j2自身內(nèi)部的信息輸出,可以不設(shè)置,當設(shè)置成trace時,你會看到log4j2內(nèi)部各種詳細輸出-->
          <!--monitorInterval:Log4j能夠自動檢測修改配置 文件和重新配置本身,設(shè)置間隔秒數(shù)-->
          <configuration status="WARN" monitorInterval="30">
              <!--先定義所有的appender-->
              <appenders>
                  <!--這個輸出控制臺的配置-->
                  <console name="Console" target="SYSTEM_OUT">
                      <!--輸出日志的格式-->
                      <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
                  </console>
                  <!--文件會打印出所有信息,這個log每次運行程序會自動清空,由append屬性決定,這個也挺有用的,適合臨時測試用-->
                  <File name="log" fileName="log/test.log" append="false">
                      <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
                  </File>
                  <!-- 這個會打印出所有的info及以下級別的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面并進行壓縮,作為存檔-->
                  <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/IdeaProjects/logs/info.log"
                               filePattern="${sys:user.home}/IdeaProjects/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
                      <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
                      <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
                      <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
                      <Policies>
                          <!-- 每天滾動一次 -->
                          <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                          <!-- 或者日志達到10KB 滾動一次 -->
                          <SizeBasedTriggeringPolicy size="10k"/>
                      </Policies>
                  </RollingFile>
                  <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/IdeaProjects/logs/warn.log"
                               filePattern="${sys:user.home}/IdeaProjects/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
                      <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
                      <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
                      <Policies>
                          <!-- 每天滾動一次 -->
                          <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                          <!-- 或者日志達到10KB 滾動一次 -->
                          <SizeBasedTriggeringPolicy size="10k"/>
                      </Policies>
                      <!-- DefaultRolloverStrategy屬性如不設(shè)置,則默認為最多同一文件夾下7個文件,這里設(shè)置了20 -->
                      <DefaultRolloverStrategy max="20"/>
                  </RollingFile>
                  <RollingFile name="RollingFileError" fileName="${sys:user.home}/IdeaProjects/logs/error.log"
                               filePattern="${sys:user.home}/IdeaProjects/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
                      <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
                      <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
                      <Policies>
                          <!-- 每天滾動一次 -->
                          <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                          <!-- 或者日志達到10KB 滾動一次 -->
                          <SizeBasedTriggeringPolicy size="10k"/>
                      </Policies>
                  </RollingFile>
              </appenders>
              <!--然后定義logger,只有定義了logger并引入的appender,appender才會生效-->
              <loggers>
                  <!--過濾掉spring和mybatis的一些無用的DEBUG信息-->
                  <logger name="org.springframework" level="INFO"/>
                  <logger name="org.mybatis" level="INFO"/>
                  <root level="all">
                      <appender-ref ref="Console"/>
                      <appender-ref ref="RollingFileInfo"/>
                      <appender-ref ref="RollingFileWarn"/>
                      <appender-ref ref="RollingFileError"/>
                  </root>
              </loggers>
          </configuration>








          瀏覽 61
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天爽天天日天天射天天舔天天操天天射天天搞 | 丝袜足交视频一区二区 | 国产做受 高潮豆麻 | 永久AV网站 | 青草青青精品视频在线观看 |