国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

springboot 日志管理之 log4j2

這篇具有很好參考價(jià)值的文章主要介紹了springboot 日志管理之 log4j2。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、log4j2 簡(jiǎn)介

????????Apache Log4j2是對(duì)Log4j的升級(jí),它比其前身Log4j 1.x提供了重大改進(jìn),并提供了Logback中可用的許多改進(jìn),同時(shí)修復(fù)了Logback架構(gòu)中的一些問題。被譽(yù)為是目前最優(yōu)秀的Java日志框架。

2、項(xiàng)中引入 log4j2 的方式
2.1、springboot 項(xiàng)目中
<!-- spring-boot-starter 默認(rèn)引入logback 需要排除 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
   <exclusions><!-- SpringBoot 默認(rèn)攜帶自身的 log 日志功能,去掉默認(rèn)配置 -->
      <exclusion>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-logging</artifactId>
      </exclusion>
   </exclusions>
</dependency>

<!-- 引入 log4j2 依賴 -->
<dependency> 
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
2.2、普通 java 項(xiàng)目中
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.6.2</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.6.2</version>
</dependency>
<!---------------log4j與slf4j集成----------------->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.21</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.6.2</version>
</dependency>
3、在項(xiàng)目中指定 log4j2 的配置文件

? ? ? ? 如果 log4j2 框架使用的是 springboot 默認(rèn)的命名方式?log4j2-spring.xml ,則不需要配置,直接在項(xiàng)目的 resources 目錄下創(chuàng)建?log4j2-spring.xml 文件即可;如果使用自定義命名的方式,需要在項(xiàng)目的配置文件中 application.yml 中添加以下配置。

logging:
  config: classpath:my_log4j2.xml
4、log4j2 配置文件詳解
4.1、configuration 標(biāo)簽
<configuration status="WARN" monitorInterval="30">
status:記錄到控制臺(tái)的內(nèi)部Log4j事件的級(jí)別。此屬性的有效值為 trace, debug, info, warn, error, fatal”。

monitorInterval: 從文件配置后,Log4j能夠自動(dòng)檢測(cè)對(duì)配置文件的更改并自行重新配置。以便僅在至少30秒之后檢查配置文件的更改。默認(rèn)為5秒。
4.2、Properties 標(biāo)簽

????????Properties 標(biāo)簽定義全局屬性,name屬性必須存在且唯一,允許使用${name}來(lái)引用該變量。

<Properties>
    <Property name="LOG_HOME">../logs/xxx</Property>
</Properties>
4.3、Appenders 標(biāo)簽
4.3.1、日志輸出到控制臺(tái)(Console 標(biāo)簽)

有幾個(gè)參數(shù):

name:指定Appender的名字;

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

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

<!--Console:日志輸出到控制臺(tái)標(biāo)準(zhǔn)輸出 -->
<Console name="Console" target="SYSTEM_OUT">
<!-- 添加過濾器,只接受程序中DEBUG級(jí)別的日志進(jìn)行處理-->
  <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
<!--pattern:日期,線程名,日志級(jí)別,日志名稱,日志信息,換行 -->
  <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level [%L] - %msg%n" />
</Console>
4.3.2、日志輸出到文件(File 標(biāo)簽)

有以下幾個(gè)參數(shù):

name:指定Appender的名字;

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

append:是否追加,默認(rèn)為

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

<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>
4.3.3、滾動(dòng)日志輸出到文件(RollingFile 標(biāo)簽)

有以下幾個(gè)參數(shù):

name:指定Appender的名字。

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

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

filePattern:指定新建日志文件的名稱格式。

Policies:指定滾動(dòng)日志的策略,就是什么時(shí)候進(jìn)行新建日志文件輸出日志。

   TimeBasedTriggeringPolicy:Policies 子節(jié)點(diǎn),基于時(shí)間的滾動(dòng)策略,interval 屬性用來(lái)指定多久滾動(dòng)一次,默認(rèn)是 1 小時(shí)。modulate=true用來(lái)對(duì)備份日志的生成時(shí)間糾偏,糾偏以0為基準(zhǔn)進(jìn)行,"0+interval"決定啟動(dòng)后第一次備份時(shí)間;

   SizeBasedTriggeringPolicy:Policies 子節(jié)點(diǎn),基于指定文件大小的滾動(dòng)策略,size 屬性用來(lái)定義每個(gè)日志文件的大??;

   DefaultRolloverStrategy:用來(lái)指定同一個(gè)文件夾下最多有幾個(gè)日志文件時(shí)開始刪除最舊的,創(chuàng)建新的(通過 max 屬性)。

<!--RollingFile:日志輸出到文件,下面的文件都使用相對(duì)路徑 -->
<!--fileName:當(dāng)前日志輸出的文件名稱 -->
<!--filePattern:備份日志文件名稱,備份目錄為logs下面以年月命名的目錄,備份時(shí)使用gz格式壓縮 -->
<RollingFile name="RollingFile" fileName="${LOG_HOME}/${FILE_NAME}.log"
   filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log.gz">
   <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level [%L] - %msg%n" />
       <!--Policies:觸發(fā)策略決定何時(shí)執(zhí)行備份 -->
   <Policies>
       <!--TimeBasedTriggeringPolicy:日志文件按照時(shí)間備份 -->
       <!--interval:每1天生成一個(gè)新文件,時(shí)間單位需要結(jié)合filePattern時(shí)間%d{yyyy-MM-dd} -->
       <!--同理,如果要每1小時(shí)生成一個(gè)新文件,則改成%d{yyyy-MM-ddHH} -->
<!--modulate:對(duì)備份日志的生成時(shí)間糾偏,糾偏以0為基準(zhǔn)進(jìn)行,"0+interval"決定啟動(dòng)后第一次備份時(shí)間 -->
       <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
       <!--SizeBasedTriggeringPolicy:日志文件按照大小備份 -->
       <!--size:指定日志文件最大為100MB,單位可以為KB、MB或GB -->
       <SizeBasedTriggeringPolicy size="100MB"/>
    </Policies>
    <!-- DefaultRolloverStrategy:翻轉(zhuǎn)策略決定如何執(zhí)行備份 -->
<!--max:最多保存5個(gè)備份文件,結(jié)合時(shí)間使用后,在每個(gè)時(shí)間段內(nèi)最多有5個(gè)備份,多出來(lái)的會(huì)被覆蓋 -->
    <!-- compressionLevel:配置日志壓縮級(jí)別,范圍0-9,0不壓縮,1壓縮速度最快,9壓縮率最好,目前只對(duì)于zip壓縮文件類型有效 -->
    <DefaultRolloverStrategy max="5" compressionLevel="1">
        <!--Delete: 刪除匹配到的過期備份文件 -->
        <!--maxDepth: 由于備份文件保存在${LOG_HOME}/$${date:yyyy-MM},所以目錄深度設(shè)置為2 -->
        <Delete basePath="${LOG_HOME}" maxDepth="2">
            <!--IfFileName:匹配文件名稱 -->
            <!--glob:匹配2級(jí)目錄深度下的以.log.gz結(jié)尾的備份文件 -->
            <IfFileName glob="*/*.log.gz" />
            <!--IfLastModified:匹配文件修改時(shí)間 -->
            <!--age:匹配超過180天的文件,單位D、H、M、S分別表示天、小時(shí)、分鐘、秒-->
            <IfLastModified age="180D" />
        </Delete>
    </DefaultRolloverStrategy>
</RollingFile>
4.4、loggers 節(jié)點(diǎn)

????????常見的有兩種:Root 和 Logger。

4.4.1、root 標(biāo)簽

????????Root 節(jié)點(diǎn)用來(lái)指定項(xiàng)目的根日志,如果沒有單獨(dú)指定 Logger,那么就會(huì)默認(rèn)使用該 Root 日志輸出。

  level:日志輸出級(jí)別;

  AppenderRef:Root 的子節(jié)點(diǎn),用來(lái)指定該日志輸出到哪個(gè) Appender。

4.4.2、logger 標(biāo)簽

????????Logger 節(jié)點(diǎn)用來(lái)單獨(dú)指定日志的形式,比如要為指定包下的class指定不同的日志級(jí)別等。

????????level:日志輸出級(jí)別;

????????name:用來(lái)指定該 Logger 所適用的類或者類所在的包全路徑,繼承自Root節(jié)點(diǎn);????????

????????AppenderRef:Logger 的子節(jié)點(diǎn),用來(lái)指定該日志輸出到哪個(gè) Appender,如果沒有指定,就會(huì)默認(rèn)繼承自 Root。如果指定了,那么會(huì)在指定的這個(gè) Appender 和 Root 的 Appender 中都會(huì)輸出,此時(shí)我們可以設(shè)置 Logger 的 additivity="false" 只在自定義的 Appender 中進(jìn)行輸出。

4.5、Filter 標(biāo)簽

?????????允許在以下四個(gè)位置中指定過濾器:由全局到局部依次是 configuration,Logger ,Appender ,Appender Reference。注意:全局 Filter 標(biāo)簽?Filters 放在?properties 標(biāo)簽之后。

常用的 filter:

1)、CompositeFilter : 組合模式,用以向外界提供統(tǒng)一的訪問接口。
2)、ThresholdFilter : 這個(gè)Filter負(fù)責(zé)按照所配置的日志級(jí)別過濾日志,等于或超出所配置級(jí)別的日志將返回onMatch結(jié)果。
3)、 LevelRangeFilter : 這個(gè)Filter也是負(fù)責(zé)按照日志級(jí)別過濾日志,只是相比較于ThresholdFilter,它比較的是指定區(qū)間范圍。這里有一個(gè)需要密切注意就是其兩個(gè)參數(shù)minLevel,maxLevel的配置;如果想要只保留WARN到ERROR級(jí)別的日志,那么應(yīng)該如下配置:

<!-- 危險(xiǎn)級(jí)別高的等級(jí)配置 作為minLevel的值 -->
<LevelRangeFilter minLevel="ERROR" maxLevel="WARN" onMatch="ACCEPT">
</LevelRangeFilter>

4)、 DynamicThresholdFilter :這個(gè)Filter允許依據(jù)ThreadContext中是否存在特定的某些值,以及日志級(jí)別來(lái)過濾LOG。
?

<Configuration status="TRACE" monitorInterval="5" packages="com.kanq.extend.cat.log4j2">
   <Filters>
   <!-- 全局級(jí)別Filter -->
   <LevelRangeFilter minLevel="DEBUG" maxLevel="ERROR" onMatch="DENY"></LevelRangeFilter>
   </Filters>
  <Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log"
                 filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
      <!-- Appender級(jí)別的Filter -->
      <BurstFilter level="INFO" rate="16" maxBurst="100"/>
      <PatternLayout>
        <pattern>%d %p %c{1.} [%t] %m%n</pattern>
      </PatternLayout>
      <TimeBasedTriggeringPolicy />
    </RollingFile>
  </Appenders>    
  <Loggers>
     <!-- Logger級(jí)別的Filter -->
    <Root level="error">
      <MapFilter onMatch="ACCEPT" onMismatch="NEUTRAL" operator="or">
        <KeyValuePair key="eventId" value="Login"/>
        <KeyValuePair key="eventId" value="Logout"/>
      </MapFilter>
    </Root>
    <Logger name="TestJavaScriptFilter" level="trace" additivity="false">
       <!-- AppenderRef級(jí)別的Filter -->
      <AppenderRef ref="List">
        <ScriptFilter onMatch="ACCEPT" onMisMatch="DENY">
          <ScriptRef ref="filter.js" />
        </ScriptFilter>
      </AppenderRef>
    </Logger>
  </Loggers>
</Configuration>
4.6、指定使用的激活環(huán)境

????????在某個(gè) appender 上添加?SpringProfile 標(biāo)簽,設(shè)置使用當(dāng)前 appender 的激活環(huán)境。

<SpringProfile name="dev | staging">
   <Console name="Out">
      <PatternLayout pattern="%m%n"/>
   </Console>
</SpringProfile>
5、log4j2-spring.xml 文件
<?xml version="1.0" encoding="UTF-8" ?>
<!--Configuration后面的status,這個(gè)用于設(shè)置log4j2自身內(nèi)部的信息輸出,可以不設(shè)置,當(dāng)設(shè)置成trace時(shí),你會(huì)看到log4j2內(nèi)部各種詳細(xì)輸出-->
<!--monitorInterval:Log4j能夠自動(dòng)檢測(cè)修改配置 文件和重新配置本身,設(shè)置間隔秒數(shù)-->
<configuration status="debug"  monitorInterval="5">
    <!--日志級(jí)別以及優(yōu)先級(jí)排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
    <!--變量配置-->
    <Properties>
    <!-- 格式化輸出:%date表示日期,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度 %msg:日志消息,%n是換行符-->
        <!-- %logger{36} 表示 Logger 名字最長(zhǎng)36個(gè)字符
        %date{YYYY:MM:dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} %l - %msg%n -->
        <property name="LOG_PATTERN" value="%date{YYYY:MM:dd HH:mm:ss.SSS} [%thread] %-5level %l -%M - %msg%n"/>
        <!-- 定義日志存儲(chǔ)的路徑 -->
        <property name="FILE_PATH" value="D:\logs"/>
    </Properties>

    <appenders>
        <!--控制臺(tái)日志輸出-->
        <console name="Console" target="SYSTEM_OUT">
            <!--運(yùn)行日志輸入文件-->
            <!--<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>-->
            <!--日志的格式-->
            <PatternLayout pattern="${LOG_PATTERN}"/>
           <!--控制臺(tái)只輸出level及其以上級(jí)別的信息(onMatch),其他的直接拒絕(onMismatch)-->
            <!--控制臺(tái)輸出日志格式-->
<!--<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>-->
        </console>
       
        <!--
        debug 運(yùn)行時(shí)異常日志信息
        -->
        <RollingFile name="debugJournal" fileName="${FILE_PATH}/堆棧日志.log"
                     filePattern="logs/$${date:yyyy-MM-dd}/debug-%d{yyyy-MM-dd}-%i.log">
            <!--文件只輸出level及以上級(jí)別的信息(onMatch),其他的直接拒絕(onMismatch)-->
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <!--日志消息輸出格式-->
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <!--日志拆分規(guī)則-->
            <Policies>
                <!--在系統(tǒng)啟動(dòng)時(shí),生成一個(gè)新的日志文件-->
                <OnStartupTriggeringPolicy/>
                <!--interval屬性用來(lái)指定多久滾動(dòng)一次,默認(rèn)是1 hour-->
                <TimeBasedTriggeringPolicy interval="0.001"/>
                <SizeBasedTriggeringPolicy size="10 Kb"/>
            </Policies>
       <!-- DefaultRolloverStrategy屬性如不設(shè)置,則默認(rèn)為最多同一文件夾下10個(gè)文件開始覆蓋-->
            <DefaultRolloverStrategy max="30"/>
        </RollingFile>
        <RollingFile name="infoJournal" fileName="${FILE_PATH}/運(yùn)行日志.log"
                    filePattern="logs/$${date:yyyy-MM-dd}/run-%d{yyyy-MM-dd}-%i.log">
            <!--文件只輸出level及以上級(jí)別的信息(onMatch),其他的直接拒絕(onMismatch)-->
            <ThresholdFilter level="fatal" onMatch="ACCEPT" onMismatch="DENY"/>
            <!--日志消息輸出格式-->
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <!--日志拆分規(guī)則-->
            <Policies>
                <!--在系統(tǒng)啟動(dòng)時(shí),生成一個(gè)新的日志文件-->
                <OnStartupTriggeringPolicy/>
                <!--interval屬性用來(lái)指定多久滾動(dòng)一次,默認(rèn)是1 hour-->
                <TimeBasedTriggeringPolicy interval="0.001"/>
                <SizeBasedTriggeringPolicy size="10 KB"/>
            </Policies>
     <!-- DefaultRolloverStrategy屬性如不設(shè)置,則默認(rèn)為最多同一文件夾下10個(gè)文件開始覆蓋-->
            <DefaultRolloverStrategy max="30"/>
        </RollingFile>
    </appenders>
    <!--Logger節(jié)點(diǎn)用來(lái)單獨(dú)指定日志的形式,比如要為指定包下的class指定不同的日志級(jí)別等。-->
    <!--然后定義loggers,只有定義了logger并引入的appender,appender才會(huì)生效-->
    <loggers>
        <!--過濾掉spring和mybatis的一些無(wú)用的信息-->
        <logger name="org.mybatis" level="info" additivity="false">
            <AppenderRef ref="Console"/>
        </logger>
        <!--監(jiān)控系統(tǒng)信息-->
<!--若是additivity設(shè)為false,則子Logger只會(huì)在自己的appender里輸出,不會(huì)在父Logger里輸出。-->
        <Logger name="org.springframework" level="info" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger>

        <root level="info">
            <appender-ref ref="Console"/>
            <appender-ref ref="infoJournal"/>
            <appender-ref ref="debugJournal"/>
        </root>
    </loggers>
</configuration>
6、日志配置信息的符號(hào)解釋
-X號(hào) # X信息輸出時(shí)左對(duì)齊;
 %p # 輸出日志信息優(yōu)先級(jí),即DEBUG,INFO,WARN,ERROR,F(xiàn)ATAL,
 %d # 輸出日志時(shí)間點(diǎn)的日期或時(shí)間,默認(rèn)格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
 %r # 輸出自應(yīng)用啟動(dòng)到輸出該log信息耗費(fèi)的毫秒數(shù)
 %c # 輸出日志信息所屬的類目,通常就是所在類的全名
 %t # 輸出產(chǎn)生該日志事件的線程名
 %l # 輸出日志事件的發(fā)生位置,相當(dāng)于%C.%M(%F:%L)的組合,包括類目名、發(fā)生的線程,以及在代碼中的行數(shù)。舉例:Testlog4.main (TestLog4.java:10)
 %x # 輸出和當(dāng)前線程相關(guān)聯(lián)的NDC(嵌套診斷環(huán)境),尤其用到像java servlets這樣的多客戶多線程的應(yīng)用中。
 %% # 輸出一個(gè)"%"字符
 %F # 輸出日志消息產(chǎn)生時(shí)所在的文件名稱
 %L # 輸出代碼中的行號(hào)
 %m # 輸出代碼中指定的消息,產(chǎn)生的日志具體信息
 %n # 輸出一個(gè)回車換行符,Windows平臺(tái)為"/r/n",Unix平臺(tái)為"/n"輸出日志信息換行

可以在%與模式字符之間加上修飾符來(lái)控制其最小寬度、最大寬度、和文本的對(duì)齊方式。如:
 1) %20c  # 指定輸出全類名最小的寬度是20,如果全類名小于20的話,默認(rèn)的情況下右對(duì)齊。
 2) %-20c # 指定輸出全類名最小的寬度是20,如果全類名小于20的話,"-"號(hào)指定左對(duì)齊。
 3) %.30c # 指定輸出全類名最小的寬度是30,如果全類名大于30的話,就會(huì)將左邊多出的字符截掉,但小于30的話也不會(huì)有空格。
 4) %20.30c # 如果全類名小于20就補(bǔ)空格,并且右對(duì)齊,如果其名稱長(zhǎng)于30字符,就從左邊較遠(yuǎn)輸出的字符截掉

總結(jié):log4j2 日志框架是基于 log4j 和 logback 的升級(jí),是當(dāng)前應(yīng)用最為廣泛的一種框架,以上詳解足以完成開發(fā)需求,更加詳細(xì)配置請(qǐng)參考:Log4j – Configuring Log4j 2。

????????本人是一個(gè)從小白自學(xué)計(jì)算機(jī)技術(shù),對(duì)運(yùn)維、后端、各種中間件技術(shù)、大數(shù)據(jù)等有一定的學(xué)習(xí)心得,想獲取自學(xué)總結(jié)資料(pdf版本)或者希望共同學(xué)習(xí),關(guān)注微信公眾號(hào):it自學(xué)社團(tuán)。后臺(tái)回復(fù)相應(yīng)技術(shù)名稱/技術(shù)點(diǎn)即可獲得。(本人學(xué)習(xí)宗旨:學(xué)會(huì)了就要免費(fèi)分享)

springboot log4j2,spring boot,log4j,后端文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-791742.html

到了這里,關(guān)于springboot 日志管理之 log4j2的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 深入理解 SpringBoot 日志框架:從入門到高級(jí)應(yīng)用——(六)Log4j2 輸出日志到 QQ郵箱

    深入理解 SpringBoot 日志框架:從入門到高級(jí)應(yīng)用——(六)Log4j2 輸出日志到 QQ郵箱

    要實(shí)現(xiàn)將 log4j2 輸出日志到 QQ 郵箱,需按照以下步驟進(jìn)行: 在 QQ 郵箱中設(shè)置 SMTP 服務(wù),開啟 POP3/SMTP 服務(wù),獲取 SMTP 服務(wù)地址、端口號(hào)、登錄郵箱賬號(hào)和密碼。 在 Java 項(xiàng)目中添加 Mail 依賴。 在 log4j2.xml 配置文件中,添加 SMTPAppender,指定SMTP服務(wù)器地址、端口號(hào)、郵箱賬號(hào)和

    2024年02月09日
    瀏覽(99)
  • 深入理解 SpringBoot 日志框架:從入門到高級(jí)應(yīng)用——(五)Log4j2配置文件詳解

    Log4j2 官方文檔:https://logging.apache.org/log4j/2.x/manual/index.html Log4j2 是一個(gè)Java日志框架,用于記錄應(yīng)用程序在運(yùn)行時(shí)的信息。它是 Log4j 的升級(jí)版本,提供了更快的處理速度,更快的日志記錄和更豐富的日志記錄功能,并支持異步日志記錄,減少了對(duì)應(yīng)用程序性能的影響。它可以

    2024年02月05日
    瀏覽(26)
  • Java日志框架JUL、Log4j、logback、log4j2使用

    Java日志框架JUL、Log4j、logback、log4j2使用

    隨著軟件系統(tǒng)的發(fā)展系統(tǒng)業(yè)務(wù)越來(lái)越多、邏輯越來(lái)越復(fù)雜、代碼量越來(lái)越多,伴隨著容易出現(xiàn)的bug也會(huì)越來(lái)越多,不論是開發(fā)測(cè)試階段還是生產(chǎn)階段都需要將這些錯(cuò)誤及時(shí)的捕捉記錄下來(lái),方便解決這些問題,否則針對(duì)出現(xiàn)的異常無(wú)從下手;此時(shí)就需要一些日志框架來(lái)完成這

    2024年02月15日
    瀏覽(20)
  • 使用Log4j與log4j2配置mybatisplus打印sql日志

    使用Log4j與log4j2配置mybatisplus打印sql日志

    環(huán)境:項(xiàng)目非完全spring項(xiàng)目,沒有spring的配置文件。執(zhí)行sql時(shí)老是不打印sql語(yǔ)句。因此進(jìn)行修改,過程比較坎坷,記錄一下。 我嘗試使用log4j和log4j2進(jìn)行配置 最終把這兩種全部配置記錄上 Log4j配置 如果項(xiàng)目用的是log4j需要進(jìn)行配置打印sql的步驟 首先引入log4j的包 配置一下l

    2024年02月04日
    瀏覽(32)
  • log4j2同步日志引發(fā)的性能問題

    在項(xiàng)目的性能測(cè)試中,相關(guān)的接口的隨著并發(fā)數(shù)增加,接口的響應(yīng)時(shí)間變長(zhǎng),接口吞吐不再增長(zhǎng),應(yīng)用的CPU使用率較高。 誰(shuí)導(dǎo)致的CPU較高,阻塞接口TPS的增長(zhǎng)?接口的響應(yīng)時(shí)間的調(diào)用鏈分布是什么樣的,有沒有慢的點(diǎn)? 1)使用火焰圖分析應(yīng)用的CPU如下,其中l(wèi)og4j2日志占了

    2024年02月08日
    瀏覽(20)
  • Log4j2 配置日志記錄發(fā)送到 kafka 中

    前言 log4j2 在 2.11.0 之后的版本,已經(jīng)內(nèi)置了 KafkaAppender 支持可以將打印的日志直接發(fā)送到 kafka 中,在這之前如果想要集中收集應(yīng)用的日志,就需要自定義一個(gè) Layout 來(lái)實(shí)現(xiàn),相對(duì)來(lái)說還是比較麻煩的。 官網(wǎng)文檔:Log4j – Log4j 2 Appenders 依賴 配置 注意這里有個(gè) syncSend 控制著是

    2024年02月10日
    瀏覽(19)
  • Java日志系統(tǒng)log4j2的使用配置和異步日志使用

    Java日志系統(tǒng)log4j2的使用配置和異步日志使用

    Apache Log4j2是Log4j的升級(jí)版,參考了logback一些優(yōu)秀的設(shè)計(jì),并且修復(fù)了logback的一些問題,而且性能上也有了重大提升,主要有: log4j2對(duì)Appender提供了一些異常處理機(jī)制 參考了logback的設(shè)計(jì),提供自動(dòng)刷新參數(shù)配置,可以自動(dòng)重載配置而不用重啟應(yīng)用 log4j2利用緩沖區(qū)和重用對(duì)象

    2024年02月02日
    瀏覽(52)
  • 日志框架梳理(Log4j,Reload4j,JUL,JCL,SLF4J,Logback,Log4j2)

    文中代碼示例獲?。宏P(guān)注【 Qin的學(xué)習(xí)營(yíng)地 】,回復(fù)【 日志框架梳理 】 在了解日志框架時(shí)總會(huì)列出一系列框架:Log4j,Reload4j,JUL,JCL,SLF4J,Logback,Log4j2,這么多框架讓人感到混亂,該怎么選取、該怎么用。接下來(lái),讓我們逐步理清這些框架及之間的關(guān)系。 首先來(lái)了解日志

    2024年02月05日
    瀏覽(62)
  • Springboot使用自帶Logback 與 整合log4j 和 log4j2過程詳解

    Springboot使用自帶Logback 與 整合log4j 和 log4j2過程詳解

    1、添加依賴 2、logback-spring.xml配置 3、使用? ?本地日志: 1、添加依賴 2、log4j.properties文件配置 ?3、配置文件中設(shè)置日志 application.yml: 4、使用: 1、添加依賴 2、log4j2.xml配置 3、配置文件中設(shè)置日志 application.yml 4、使用: 注意:如果pom.xml中添加有?spring-boot-starter-test 依賴 必

    2024年01月19日
    瀏覽(58)
  • 應(yīng)用中日志的優(yōu)雅使用(整合log4j2與SLF4J)

    應(yīng)用中不可直接使用日志系統(tǒng)( Log4j、 Logback) 中的 API,而應(yīng)依賴使用日志框架( SLF4J、 JCL–Jakarta Commons Logging) 中的 API,使用門面模式的日志框架,有利于維護(hù)和各個(gè)類的日志處理方式統(tǒng)一。 日志框架( SLF4J、 JCL–Jakarta Commons Logging)的使用方式(推薦使用 SLF4J) 所有

    2023年04月09日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包