欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot?使用log4j2的配置過程

 更新時間:2022年09月13日 11:43:50   作者:蝸牛學(xué)編程  
這篇文章主要介紹了SpringBoot?使用log4j2的配置,springboot默認是用logback的日志框架的,所以要在pom中配置排除logback。這里需要注意的是,其實不止一處使用了logback,所以要在starter中統(tǒng)一排除,然后引入log4j2,需要的朋友可以參考下

前言

日志接口(slf4j)

slf4j是對所有日志框架制定的一種規(guī)范、標(biāo)準、接口,并不是一個框架的具體的實現(xiàn),因為接口并不能獨立使用,需要和具體的日志框架實現(xiàn)配合使用(如log4j、logback)。

接口用于定制規(guī)范,可以有多個實現(xiàn),使用時是面向接口的(導(dǎo)入的包都是slf4j的包而不是具體某個日志框架中的包),即直接和接口交互,不直接使用實現(xiàn),所以可以任意的更換實現(xiàn)而不用更改代碼中的日志相關(guān)代碼。

日志實現(xiàn)(log4j、logback、log4j2)

Log4j:Apache的一個開源項目,可以控制日志信息輸送的目的地是控制臺、文件、GUI組件等,可以控制每一條日志的輸出格式,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應(yīng)用的代碼。雖然已經(jīng)停止維護了,但目前絕大部分企業(yè)都是用的log4j。

LogBack:logback同樣是由log4j的作者設(shè)計完成的,擁有更好的特性,用來取代log4j的一個日志框架,是slf4j的原生實現(xiàn)。

Log4j2:Log4j2是log4j 1.x和logback的改進版,據(jù)說采用了一些新技術(shù)(無鎖異步、等等),使得日志的吞吐量、性能比log4j 1.x提高10倍,并解決了一些死鎖的bug,而且配置更加簡單靈活。

配置過程

springboot默認是用logback的日志框架的,所以要在pom中配置排除logback。這里需要注意的是,其實不止一處使用了logback,所以要在starter中統(tǒng)一排除,然后引入log4j2。

涉及的POM部分文件

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion><!-- springboot默認是用logback的日志框架的 -->
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-logging</artifactId>  
        </exclusion>  
    </exclusions>
</dependency>
<dependency> <!-- 引入log4j2依賴 -->  
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>  
</dependency>

log4j2配置文件,默認命名為log4j2.xml。 程序會會自動加載,如果命名為log4j2-xx.xml。需要在在SpringBoot配置文件application.properties中引入該配置文件,增加一行:logging.config=classpath:log4j2-xx.xml

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

<Configuration status="WARN" monitorInterval="1800">
  
    <!--變量配置-->
    <Properties>
        <!--應(yīng)用名稱-->
        <property name="APP_NAME">sky-hello</property>
        <!--日志存放路徑-->
        <property name="LOG_PATH">./logs/${APP_NAME}</property>
        <!--日志備份路徑-->
        <property name="LOG_BACKUP_PATH">${LOG_PATH}/backup</property>
        <!--日志輸出格式-控制臺-->
        <property name="PATTERN_CONSOLE">%d{yyyy-MM-dd HH:mm:ss.SSS} | %blue{%traceId} | %highlight{%-5p} | %magenta{${sys:PID}} | %yellow{%t} | %cyan{%l} : %msg%n</property>
        <!--日志輸出格式-文件-->
        <property name="PATTERN_FILE">%d{yyyy-MM-dd HH:mm:ss.SSS} | %traceId | %-5p | ${sys:PID} | %t | %l : %msg%n</property>
    </Properties>

    <!--定義日志輸出目的地,內(nèi)容和格式等-->
    <Appenders>
        
        <!--可歸檔文件
            1. fileName: 日志存儲路徑
            2. filePattern: 歷史日志封存路徑。其中%d{yyyy-MM-dd}表示了日志的時間單位是天,log4j2自動識別zip等后綴,表示歷史日志需要壓縮
        -->
        <RollingFile name="RollingFile" fileName="${LOG_PATH}/${APP_NAME}.log" filePattern="${LOG_BACKUP_PATH}/$${date:yyyy-MM}/${APP_NAME}-%d{yyyy-MM-dd}_%i.log.zip">
            <!--輸出日志的格式, 不設(shè)置默認為:%m%n-->
            <PatternLayout pattern="${PATTERN_FILE}"/>
            <!--只輸出level及以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            <!--歸檔設(shè)置-->
            <Policies>
                <!--按時間間隔歸檔:
                    1. interval=時間間隔, 單位由filePattern的%d日期格式指定, 此處配置代表每一天歸檔一次
                    2. modulate="true" 是否對interval取模,決定了下一次觸發(fā)的時間點
                -->
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                <!-- 按照日志文件的大小: size表示當(dāng)前日志文件的最大size,支持單位:KB/MB/GB-->
                <SizeBasedTriggeringPolicy size="50MB"/>
            </Policies>
            <!-- 歷史日志配置: 該屬性如不設(shè)置,則默認為最多同一文件夾下7個文件開始覆蓋-->
            <DefaultRolloverStrategy max="30"/>
        </RollingFile>

        <!--錯誤信息單獨歸檔-->
        <RollingFile name="RollingFileError" fileName="${LOG_PATH}/${APP_NAME}-error.log" filePattern="${LOG_BACKUP_PATH}/$${date:yyyy-MM}/${APP_NAME}-error-%d{yyyy-MM-dd}_%i.log.zip">
            <PatternLayout pattern="${PATTERN_FILE}"/>
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="50MB"/>
            </Policies>
        </RollingFile>
    </Appenders>


    <!--Loggers配置-->
    <Loggers>

        <!--
        注意點:
        1. logger節(jié)點用來單獨指定日志的形式,比如要為指定包下的class指定不同的日志級別等:
           (1). name: 用來指定該logger所適用的類或者類所在的包全路徑,繼承自Root節(jié)點.
           (2). AppenderRef:關(guān)聯(lián)的Appender, 只有定義了logger并引入的appender,appender才會生效
           (3). additivity: logEvent的傳遞性。true LogEvent處理后傳遞給父Logger打印。false LogEvent處理后不再向上傳遞給父Logger(解決日志重復(fù)輸出問題)
           (4). logger配置的level必須高于或等于Appenders中ThresholdFilter配置的過濾level, 否則會造成信息丟失
        2. root配置日志的根節(jié)點
        -->

        <!-- 同步日志配置-->
        <logger name="com.sky.hello.mapper" level="debug" additivity="false">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
            <AppenderRef ref="RollingFileError"/>
        </logger>

        <root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
            <AppenderRef ref="RollingFileError"/>
        </root>

    </Loggers>

</Configuration>

代碼中使用

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
private final Logger log = LoggerFactory.getLogger(this.getClass());
 
log.info("info")

最后附加 log4j的格式配置參數(shù)

%n - 換行

%m - 日志內(nèi)容,輸出代碼中指定的日志信息

%p - 日志級別(FATAL,   ERROR,   WARN,   INFO,   DEBUG   or   custom)

%r - 程序啟動到現(xiàn)在的毫秒數(shù)

%% -  輸出一個"%" 字符

%t - 當(dāng)前線程名

%d - 日期和時間, 常用的格式有 %d{DATE}, %d{ABSOLUTE}, %d{HH:mm:ss,SSS}, %d{ddMMyyyy HH:mm:ss,SSS}

%l - 同 %F%L%C%M

%F - java源文件名

%L - java源碼行數(shù)

%C - java類名,%C{1} 輸出最后一個元素

%M - java方法名

到此這篇關(guān)于SpringBoot 使用log4j2的配置的文章就介紹到這了,更多相關(guān)SpringBoot log4j2配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java隊列實現(xiàn)方法(順序隊列,鏈式隊列,循環(huán)隊列)

    java隊列實現(xiàn)方法(順序隊列,鏈式隊列,循環(huán)隊列)

    下面小編就為大家分享一篇java隊列實現(xiàn)方法(順序隊列,鏈式隊列,循環(huán)隊列),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 深入解析Java的Hibernate框架中的一對一關(guān)聯(lián)映射

    深入解析Java的Hibernate框架中的一對一關(guān)聯(lián)映射

    這篇文章主要介紹了Java的Hibernate框架的一對一關(guān)聯(lián)映射,包括對一對一外聯(lián)映射的講解,需要的朋友可以參考下
    2016-01-01
  • SpringBoot 定時任務(wù)遇到的坑

    SpringBoot 定時任務(wù)遇到的坑

    這篇文章主要介紹了SpringBoot 定時任務(wù)遇到的坑,今天踩的這個坑和 cron 表達式有關(guān),文中給大家介紹了cron 表達式的解釋,需要的朋友一起看看吧
    2017-11-11
  • Java集合中的fail-fast(快速失敗)機制詳解

    Java集合中的fail-fast(快速失敗)機制詳解

    這篇文章主要給大家介紹了關(guān)于Java集合中fail-fast(快速失敗)機制的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Spring Cloud 覆寫遠端的配置屬性實例詳解

    Spring Cloud 覆寫遠端的配置屬性實例詳解

    這篇文章主要介紹了Spring Cloud 覆寫遠端的配置屬性的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 使用spring-data-redis中的Redis事務(wù)

    使用spring-data-redis中的Redis事務(wù)

    這篇文章主要介紹了使用spring-data-redis中的Redis事務(wù),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java遞歸實現(xiàn)評論多級回復(fù)功能

    Java遞歸實現(xiàn)評論多級回復(fù)功能

    這篇文章主要介紹了Java遞歸實現(xiàn)評論多級回復(fù)功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • java性能優(yōu)化之編譯器版本與平臺對應(yīng)關(guān)系

    java性能優(yōu)化之編譯器版本與平臺對應(yīng)關(guān)系

    這篇文章主要介紹了java性能優(yōu)化--編譯器版本與平臺對應(yīng)關(guān)系,本章節(jié)更加具體化的學(xué)習(xí)編譯器還有哪些可以優(yōu)化的方便,讓你的應(yīng)用展現(xiàn)出更好的性能,需要的朋友可以參考下
    2022-06-06
  • IDEA類與方法注釋模板設(shè)置圖文教程(非常詳細)

    IDEA類與方法注釋模板設(shè)置圖文教程(非常詳細)

    IDEA自帶的注釋模板不是太好用,我本人到網(wǎng)上搜集了很多資料系統(tǒng)的整理了一下制作了一份比較完整的模板來分享給大家,下面這篇文章主要給大家介紹了關(guān)于IDEA類與方法注釋模板設(shè)置的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 通過Feign進行調(diào)用@FeignClient?找不到的解決方案

    通過Feign進行調(diào)用@FeignClient?找不到的解決方案

    這篇文章主要介紹了通過Feign進行調(diào)用@FeignClient?找不到的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論