亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot?2.x怎么整合Log4j2日志

發布時間:2022-10-10 09:24:00 來源:億速云 閱讀:122 作者:iii 欄目:開發技術

這篇文章主要介紹了SpringBoot 2.x怎么整合Log4j2日志的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇SpringBoot 2.x怎么整合Log4j2日志文章都會有所收獲,下面我們一起來看看吧。

    整合步驟

    本次演示采用的springboot 版本為2.7.x。

    • 依賴引入

    <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>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
    • 需要排除掉logback日志框架的依賴spring-boot-starter-logging

    • 引入log4j2的依賴spring-boot-starter-log4j2

    • 添加log4j2配置文件

    • 在classpath下添加log4j2-spring.xml或者log4j2.xml文件,建議使用log4j-spring.xml,這種方式spring可以控制初始化。

    • 如果你不想把配置放到classpath下,需要自定義位置, 可以在配置文件中通過配置項logging.config: ./log4j2.xml來修改。

    SpringBoot?2.x怎么整合Log4j2日志

    • 添加日志文件內容

    下面通過一個最精簡的配置內容,下一節詳細講解配置。

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration monitorInterval="5">
        <!--變量配置-->
        <Properties>
            <!-- 格式化輸出:%date表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度 %msg:日志消息,%n是換行符-->
            <!-- %logger{36} 表示 Logger 名字最長36個字符 -->
            <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
            <!-- 定義日志存儲的路徑 -->
            <property name="FILE_PATH" value="./logs"/>
            <property name="FILE_NAME" value="log4j2Demo"/>
        </Properties>
    
        <appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <!--設置日志格式及顏色-->
                <PatternLayout
                        pattern="%style{%d{ISO8601}}{bright,green} %highlight{%-5level} [%style{%t}{bright,blue}] %style{%C{}}{bright,yellow}: %msg%n%style{%throwable}{red}"
                        disableAnsi="false" noConsoleNoAnsi="false"/>
            </Console>
    
            <!--文件會打印出所有信息,這個log每次運行程序會自動清空,由append屬性決定,適合臨時測試用-->
            <File name="Filelog" fileName="${FILE_PATH}/test.log" append="false">
                <PatternLayout pattern="${LOG_PATTERN}"/>
            </File>
    
            <!-- 這個會打印出所有的info及以下級別的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面并進行壓縮,作為存檔-->
            <RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log"
                         filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
                <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="${LOG_PATTERN}"/>
                <Policies>
                    <!--interval屬性用來指定多久滾動一次,默認是1 hour-->
                    <TimeBasedTriggeringPolicy interval="1"/>
                    <SizeBasedTriggeringPolicy size="10MB"/>
                </Policies>
                <!-- DefaultRolloverStrategy屬性如不設置,則默認為最多同一文件夾下7個文件開始覆蓋-->
                <DefaultRolloverStrategy max="15"/>
            </RollingFile>
    
            <!-- 這個會打印出所有的warn及以下級別的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面并進行壓縮,作為存檔-->
            <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log"
                         filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
                <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
                <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="${LOG_PATTERN}"/>
                <Policies>
                    <!--interval屬性用來指定多久滾動一次,默認是1 hour-->
                    <TimeBasedTriggeringPolicy interval="1"/>
                    <SizeBasedTriggeringPolicy size="10MB"/>
                </Policies>
                <!-- DefaultRolloverStrategy屬性如不設置,則默認為最多同一文件夾下7個文件開始覆蓋-->
                <DefaultRolloverStrategy max="15"/>
            </RollingFile>
    
            <!-- 這個會打印出所有的error及以下級別的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面并進行壓縮,作為存檔-->
            <RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log"
                         filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
                <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout pattern="${LOG_PATTERN}"/>
                <Policies>
                    <!--interval屬性用來指定多久滾動一次,默認是1 hour-->
                    <TimeBasedTriggeringPolicy interval="1"/>
                    <SizeBasedTriggeringPolicy size="10MB"/>
                </Policies>
                <!-- DefaultRolloverStrategy屬性如不設置,則默認為最多同一文件夾下7個文件開始覆蓋-->
                <DefaultRolloverStrategy max="15"/>
            </RollingFile>
    
        </appenders>
    
        <!--Logger節點用來單獨指定日志的形式,比如要為指定包下的class指定不同的日志級別等。-->
        <!--然后定義loggers,只有定義了logger并引入的appender,appender才會生效-->
        <loggers>
            <root level="info">
                <appender-ref ref="Console"/>
                <appender-ref ref="Filelog"/>
                <appender-ref ref="RollingFileInfo"/>
                <appender-ref ref="RollingFileWarn"/>
                <appender-ref ref="RollingFileError"/>
            </root>
        </loggers>
    
    </configuration>
    • 添加測試代碼

    SpringBoot?2.x怎么整合Log4j2日志

    • 查看結果

    SpringBoot?2.x怎么整合Log4j2日志

    Log4j2配置詳解

    log4j2日志級別從低到高,如下:

    ● trace:追蹤,就是程序推進一下,可以寫個trace輸出

    ● debug:調試,一般作為最低級別,trace基本不用。

    ● info:輸出重要的信息,使用較多

    ● warn:警告,有些信息不是錯誤信息,但也要給程序員一些提示。

    ● error:錯誤信息。用的也很多。

    ● fatal:致命錯誤。

    如果一條日志信息的級別大于等于配置文件的級別,就記錄。

    配置文件模板如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!--Configuration后面的status,這個用于設置log4j2自身內部的信息輸出,可以不設置,當設置成trace時,你會看到log4j2內部各種詳細輸出-->
    <!--monitorInterval:Log4j能夠自動檢測修改配置 文件和重新配置本身,設置間隔秒數-->
    <configuration monitorInterval="5">
      <!--日志級別以及優先級排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
    
      <!--變量配置-->
      <Properties>
        <!-- 格式化輸出:%date表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度 %msg:日志消息,%n是換行符-->
        <!-- %logger{36} 表示 Logger 名字最長36個字符 -->
        <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
        <!-- 定義日志存儲的路徑 -->
        <property name="FILE_PATH" value="更換為你的日志路徑" />
        <property name="FILE_NAME" value="更換為你的項目名" />
      </Properties>
    
      <appenders>
    
        <console name="Console" target="SYSTEM_OUT">
          <!--輸出日志的格式-->
         <PatternLayout
                        pattern="%style{%d{ISO8601}}{bright,green} %highlight{%-5level} [%style{%t}{bright,blue}] %style{%C{}}{bright,yellow}: %msg%n%style{%throwable}{red}"
                        disableAnsi="false" noConsoleNoAnsi="false"/>
          <!--控制臺只輸出level及其以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
          <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
        </console>
    
        <!--文件會打印出所有信息,這個log每次運行程序會自動清空,由append屬性決定,適合臨時測試用-->
        <File name="Filelog" fileName="${FILE_PATH}/test.log" append="false">
          <PatternLayout pattern="${LOG_PATTERN}"/>
        </File>
    
        <!-- 這個會打印出所有的info及以下級別的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面并進行壓縮,作為存檔-->
        <RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
          <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
          <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
          <PatternLayout pattern="${LOG_PATTERN}"/>
          <Policies>
            <!--interval屬性用來指定多久滾動一次,默認是1 hour-->
            <TimeBasedTriggeringPolicy interval="1"/>
            <SizeBasedTriggeringPolicy size="10MB"/>
          </Policies>
          <!-- DefaultRolloverStrategy屬性如不設置,則默認為最多同一文件夾下7個文件開始覆蓋-->
          <DefaultRolloverStrategy max="15"/>
        </RollingFile>
    
        <!-- 這個會打印出所有的warn及以下級別的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面并進行壓縮,作為存檔-->
        <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
          <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
          <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
          <PatternLayout pattern="${LOG_PATTERN}"/>
          <Policies>
            <!--interval屬性用來指定多久滾動一次,默認是1 hour-->
            <TimeBasedTriggeringPolicy interval="1"/>
            <SizeBasedTriggeringPolicy size="10MB"/>
          </Policies>
          <!-- DefaultRolloverStrategy屬性如不設置,則默認為最多同一文件夾下7個文件開始覆蓋-->
          <DefaultRolloverStrategy max="15"/>
        </RollingFile>
    
        <!-- 這個會打印出所有的error及以下級別的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面并進行壓縮,作為存檔-->
        <RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
          <!--控制臺只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
          <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
          <PatternLayout pattern="${LOG_PATTERN}"/>
          <Policies>
            <!--interval屬性用來指定多久滾動一次,默認是1 hour-->
            <TimeBasedTriggeringPolicy interval="1"/>
            <SizeBasedTriggeringPolicy size="10MB"/>
          </Policies>
          <!-- DefaultRolloverStrategy屬性如不設置,則默認為最多同一文件夾下7個文件開始覆蓋-->
          <DefaultRolloverStrategy max="15"/>
        </RollingFile>
    
      </appenders>
    
      <!--Logger節點用來單獨指定日志的形式,比如要為指定包下的class指定不同的日志級別等。-->
      <!--然后定義loggers,只有定義了logger并引入的appender,appender才會生效-->
      <loggers>
    
        <!--過濾掉spring和mybatis的一些無用的DEBUG信息-->
        <logger name="org.mybatis" level="info" additivity="false">
          <AppenderRef ref="Console"/>
        </logger>
        <!--監控系統信息-->
        <!--若是additivity設為false,則 子Logger 只會在自己的appender里輸出,而不會在 父Logger 的appender里輸出。-->
        <Logger name="org.springframework" level="info" additivity="false">
          <AppenderRef ref="Console"/>
        </Logger>
    
        <root level="info">
          <appender-ref ref="Console"/>
          <appender-ref ref="Filelog"/>
          <appender-ref ref="RollingFileInfo"/>
          <appender-ref ref="RollingFileWarn"/>
          <appender-ref ref="RollingFileError"/>
        </root>
      </loggers>
    
    </configuration>

    根節點configuration

    • 屬性status用來指定log4j本身的打印日志的級別.

    • 屬性monitorinterval用于指定log4j自動重新配置的監測間隔時間,單位是s,最小是5s.

    子節點Properties

    配置全局變量,可以通過${xxx}的方式引用

    子節點Appenders

    常見的有三種Appender: Console、RollingFile、File。

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

    • name:指定Appender的名字.

    • target:SYSTEM_OUT 或 SYSTEM_ERR,一般只設置默認:SYSTEM_OUT.

    • PatternLayout:輸出格式,不設置默認為:%m%n.

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

    • name:指定Appender的名字.

    • fileName:指定輸出日志的目的文件帶全路徑的文件名.

    • PatternLayout:輸出格式,不設置默認為:%m%n.

    RollingFile節點用來定義超過指定條件自動刪除舊的創建新的Appender.

    • name:指定Appender的名字.

    • fileName:指定輸出日志的目的文件帶全路徑的文件名.

    • PatternLayout:輸出格式,不設置默認為:%m%n.

    • filePattern : 指定當發生Rolling時,文件的轉移和重命名規則.

    • Policies:指定滾動日志的策略,就是什么時候進行新建日志文件輸出日志.

    • TimeBasedTriggeringPolicy:Policies子節點,基于時間的滾動策略,interval屬性用來指定多久滾動一次,默認是1 hour。modulate=true用來調整時間:比如現在是早上3am,interval是4,那么第一次滾動是在4am,接著是8am,12am...而不是7am.

    • SizeBasedTriggeringPolicy:Policies子節點,基于指定文件大小的滾動策略,size屬性用來定義每個日志文件的大小.

    • DefaultRolloverStrategy:用來指定同一個文件夾下最多有幾個日志文件時開始刪除最舊的,創建新的(通過max屬性)。

    子節點Loggers

    常見的有兩種類型:root和logger, root實際上是一種特殊的logger。root節點用來指定項目的根日志,如果沒有單獨指定logger,那么就會默認使用該root日志輸出。

    • 屬性level:日志輸出級別

    • 屬性appenderRef,用來指定該日志輸出到哪個Appender。

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

    • logger節點下屬性name用來指定該Logger所適用的類或者類所在的包全路徑,繼承自root節點。

    • logger節點下的屬性appenderRef, 用來指定該日志輸出到哪個Appender,如果沒有指定,就會默認繼承自root。如果指定了,那么會在指定的這個appender和root的appender中都會輸出,此時我們可以設置Logger的additivity="false"只在自定義的appender中進行輸出。

    關于“SpringBoot 2.x怎么整合Log4j2日志”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“SpringBoot 2.x怎么整合Log4j2日志”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    铜鼓县| 莲花县| 鹤庆县| 五莲县| 城口县| 黄梅县| 临汾市| 尉犁县| 鹤山市| 礼泉县| 连云港市| 宁陕县| 镇赉县| 河东区| 宁德市| 三门峡市| 临潭县| 汽车| 凉城县| 九江县| 沛县| 嘉善县| 新巴尔虎左旗| 壤塘县| 安丘市| 泾川县| 五华县| 开化县| 那曲县| 乐平市| 苗栗市| 华容县| 盖州市| 湘乡市| 昌黎县| 仁布县| 安国市| 涡阳县| 仁化县| 册亨县| 凤庆县|