Spring?Boot?3中一套可以直接用于生產(chǎn)環(huán)境的Log4J2日志配置詳解
一 Log4J2 相關(guān)概念及基本特點
Log4J2是Apache Log4j的升級版,參考了logback的一些優(yōu)秀的設(shè)計,并且修復(fù)了一些問題,因此帶來了一些重大的提升。
Logger:日志記錄器,用于標(biāo)識日志的來源。常見的有兩種:Root和Logger。Root節(jié)點用來指定項目的根日志,如果沒有單獨指定Logger,那么就會默認(rèn)使用該Root日志輸出
Appender:日志輸出器,用于將日志記錄輸出到指定的目標(biāo)。常見的有三種子節(jié)點:Console、RollingFile、File。Console節(jié)點用來定義輸出到控制臺的Appender;RollingFile節(jié)點用來定義超過指定條件自動刪除舊的創(chuàng)建新的Appender;File節(jié)點用來定義輸出到指定位置的文件的Appender。
Layout:日志格式化器,用于定義日志記錄的輸出格式。Root節(jié)點用來指定項目的根日志,如果沒有單獨指定Logger,那么就會默認(rèn)使用該Root日志輸出。
二 Spring Boot3 中啟用Log4J2的pom.xml配置
<dependencies>
<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>排除原依賴中的日志相關(guān)包,單獨引入Log4J2依賴。
三 application.properties 的配置
# 控制臺輸出的字符集 logging.charset.console=UTF-8 # 日志寫入文件的字符集 logging.charset.file=UTF-8 # Log4J2自定義配置的路徑,放置到resources目錄下 logging.config=classpath:logback.xml # 應(yīng)用程序包的路徑 logging.level.com.test=INFO # 日志存放路徑 logging.file.path=logs/test.log
四 完整配置
配置文件的名稱為:logback.xml,放置于resources目錄下。
<?xml
version="1.0" encoding="UTF-8"?>
<!--status:用來指定log4j2本身的打印日志的級別,monitorinterval:用于指定log4j自動重新配置的監(jiān)測間隔時間,單位是s,最小是5s-->
<Configuration status="WARN" monitorInterval="30">
<Properties>
<Property name="logDir">logs</Property>
<Property name="logFile">cmams</Property>
<Property name="level">DEBUG</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="[%-4level] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %logger{96}:%line - %msg%n"/>
<!--控制臺只輸出level及其以上級別的信息(onMatch),其他的直接拒絕(onMismatch)-->
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
</Console>
<RollingFile name="File" fileName="${logDir}/${logFile}.log"
filePattern="${logDir}/${logFile}-%d{yyyy-MM-dd}-%i.log.gz">
<!--日志輸出格式-->
<PatternLayout pattern="[%-4level] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %logger{96}:%line - %msg%n"/>
<!--滿足任何一個policy即進行歸檔-->
<Policies>
<!--當(dāng)前日志與開始日期不匹配(RollingFile中配置的filePattern中配置的最小時間單位不匹配時)時進行歸檔-->
<TimeBasedTriggeringPolicy/>
<!--文件超過512M進行歸檔,SizeBasedTriggeringPolicy規(guī)定了當(dāng)日志文件達(dá)到了指定的size時,觸發(fā)rollover操作。size參數(shù)可以用KB、MB、GB等做后綴來指定具體的字節(jié)數(shù),如20MB-->
<SizeBasedTriggeringPolicy size="64MB"/>
</Policies>
<!--歸檔的文件最大數(shù)量,max參數(shù)指定了計數(shù)器的最大值。一旦計數(shù)器達(dá)到了最大值,過舊的文件將被刪除。-->
<DefaultRolloverStrategy max="20">
<!--刪除規(guī)則-->
<Delete basePath="${logDir}" maxDepth="2">
<!--匹配文件規(guī)則-->
<IfFileName glob="*.log.gz">
<IfLastModified age="60d">
<IfAny>
<!--logDir下文件總大小超過5GB,進行刪除-->
<IfAccumulatedFileSize exceeds="5GB"/>
<!--logDir下文件總數(shù)量超過100,進行刪除-->
<IfAccumulatedFileCount exceeds="100"/>
</IfAny>
</IfLastModified>
</IfFileName>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<!--若是additivity設(shè)為false,則 子Logger 只會在自己的appender里輸出,而不會在 父Logger 的appender里輸出。-->
<Logger name="com.cxwn.cmams" level="${level}" additivity="false">
<AppenderRef ref="File"/>
<AppenderRef ref="Console"/>
</Logger>
<Logger name="org.springframework" level="ERROR" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Logger>
<Root level="WARN">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>到此這篇關(guān)于Spring Boot 3中一套可以直接用于生產(chǎn)環(huán)境的Log4J2日志配置的文章就介紹到這了,更多相關(guān)Spring Boot 3 Log4J2日志配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Spring Data JPA動態(tài)條件查詢的寫法
本篇文章主要介紹了Spring Data JPA動態(tài)條件查詢的寫法 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
Java中設(shè)置session超時(失效)的三種方法
這篇文章主要介紹了Java中設(shè)置session超時(失效)的三種方法,本文講解了在web容器中設(shè)置、在工程的web.xml中設(shè)置、通過java代碼設(shè)置3種方法,需要的朋友可以參考下2015-07-07
mybatis-plus QueryWrapper自定義查詢條件的實現(xiàn)
這篇文章主要介紹了mybatis-plus QueryWrapper自定義查詢條件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Java concurrency集合之LinkedBlockingDeque_動力節(jié)點Java學(xué)院整理
LinkedBlockingDeque是雙向鏈表實現(xiàn)的雙向并發(fā)阻塞隊列。該阻塞隊列同時支持FIFO和FILO兩種操作方式,即可以從隊列的頭和尾同時操作(插入/刪除);并且,該阻塞隊列是支持線程安全。2017-06-06

