日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

log4j2配置详情

發(fā)布時(shí)間:2024/3/13 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 log4j2配置详情 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
<?xml version="1.0" encoding="UTF-8"?> /app_data/logs/my_app_log UTF-8 [%d{yyyy-MM-dd HH:mm:ss.SSS}][%-5p][%T][%c.%M:%L] %msg%xEx%n 1MB <Appenders><!-- Console Appender常用于將日志輸出到System.out,一般用在開發(fā)環(huán)境 --><Console name="Console" target="SYSTEM_OUT"><!-- 接受程序中DEBUG級(jí)別的日志進(jìn)行處理,onMatch的值為 ACCEPT 表示接受該級(jí)別及以上的,onMismatch 的值為 DENY 表示拒絕該等級(jí)一下的--> <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/><!-- 在大多數(shù)情況下,Appender將格式化LogEvent的責(zé)任委托給Layout --><PatternLayout pattern="${log_pattern}"/></Console><!-- RollingFile name:指定Appender的名字,fileName:指定輸出日志的目的文件帶全路徑的文件名,filePattern:指定新建日志文件的名稱格式. PatternLayout:輸出格式,不設(shè)置默認(rèn)為:%m%n,Policies:指定滾動(dòng)日志的策略,就是什么時(shí)候進(jìn)行新建日志文件輸出日志.--> <!-- 這個(gè)RollingFile Appender會(huì)打印出所有的DEBUG及以下級(jí)別(DEBUG、INFO、ERROR、FATAL、OFF)的信息 --><RollingFile name="DebugLogRollingFile" fileName="${log_base_path}/my_app_debug.log"filePattern="${log_base_path}/$${date:yyyy_MM_dd}/my_app_debug_%d{yyyy_MM_dd_HH}_%i.log.gz"><ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${log_pattern}" charset="UTF-8"/><!-- Policies表示一個(gè)CompositeTriggeringPolicy,可以組合多個(gè)TriggeringPolicy,只要內(nèi)部的任意一個(gè)TriggeringPolicy滿足觸發(fā)條件,都會(huì)滾動(dòng)日志 --><Policies><!-- TimeBasedTriggeringPolicy用于按時(shí)間滾動(dòng)日志。只要filePattern屬性值中的日期/時(shí)間模式(pattern)不再應(yīng)用于當(dāng)前文件時(shí)就進(jìn)行日志滾動(dòng)。這種規(guī)則通過(guò)interval和modulate屬性來(lái)配置。interval屬性指定一個(gè)整數(shù),用于基于日期/時(shí)間模式中的最小的時(shí)間單位數(shù)滾動(dòng)一次。例如,filePattern值為/app_data/logs/my_app/$${date:yyyy_MM_dd}/my_app_%d{yyyy_MM_dd_HH}_%i.log,這里使用小時(shí)作為最小的時(shí)間單位時(shí),假如interval參數(shù)值為4,則表示每4小時(shí)滾動(dòng)一次。默認(rèn)值為1。modulate表示是否調(diào)整interval屬性值以便下次滾動(dòng)發(fā)生在interval邊界處。如果時(shí)間最小單位為小時(shí),當(dāng)前時(shí)間為早上3點(diǎn),間隔為4小時(shí),則第一次滾動(dòng)將發(fā)生在早上4點(diǎn)時(shí)(而不是早上7點(diǎn)),后續(xù)滾動(dòng)將發(fā)生在早上8點(diǎn)、中午12點(diǎn)、下午4點(diǎn)等時(shí)刻 --><TimeBasedTriggeringPolicy interval="1" modulate="false"/><!-- SizeBasedTriggeringPolicy用于按文件大小滾動(dòng)日志。每當(dāng)日志文件超過(guò)size指定的大小(一般不超過(guò)幾十MB,否則使用軟件打開導(dǎo)出的日志時(shí)很不方便),則這size大小的日志會(huì)自動(dòng)存入按filePattern屬性指定建立的文件夾下面并進(jìn)行壓縮存檔 --><SizeBasedTriggeringPolicy size="${max_single_file_size}"/></Policies><!-- DefaultRolloverStrategy可以同時(shí)接受RollingFileAppender中filePattern屬性值中日期/時(shí)間和整數(shù)計(jì)數(shù)器(%i)的pattern,當(dāng)日期/時(shí)間滿足條件時(shí),則會(huì)使用當(dāng)前的日期/時(shí)間生成新的日志文件,如果filePattern屬性值中含有一個(gè)整數(shù)計(jì)數(shù)器%i,則在每次滾動(dòng)時(shí)該整數(shù)都會(huì)增加,如果filePattern屬性值中同時(shí)包含了日期/時(shí)間和整數(shù)計(jì)數(shù)器(%i),計(jì)數(shù)器會(huì)在日期/時(shí)間不變時(shí)而滿足其他滾動(dòng)觸發(fā)條件時(shí)(文件大小)開始自增,直到日期/時(shí)間發(fā)生變化時(shí),計(jì)數(shù)器會(huì)重新自增。以.gz、.zip、.bz2、deflate、pack200或xz結(jié)尾的filePattern值,會(huì)在日志文件歸檔時(shí)以后綴對(duì)應(yīng)的格式進(jìn)行壓縮。min屬性指定計(jì)數(shù)器的最小值,默認(rèn)為1。max屬性指定計(jì)數(shù)器的最大值,一旦計(jì)數(shù)器達(dá)到了最大值,最早的歸檔將會(huì)在每次滾動(dòng)時(shí)被刪除,默認(rèn)值為7。fileIndex屬性如果設(shè)置為max(默認(rèn)),則具有更大索引的文件比具有更小索引的文件內(nèi)容更新,如果設(shè)置為min,文件將重命名且計(jì)數(shù)器將遵循Fixed Window策略,這兩種情況均有可能導(dǎo)致批量的文件重命名,自2.8版本開始,如果fileIndex屬性設(shè)置為nomax,則min和max屬性值都將會(huì)被忽略,文件編號(hào)將每次遞增1,每次滾動(dòng)都會(huì)遞增到更大的值,且沒(méi)有最大文件編號(hào)的限制 --><!--<DefaultRolloverStrategy max="100" min="1" fileIndex = "nomax"/>--><DefaultRolloverStrategy fileIndex="nomax"><!-- Log4j 2.5引入了刪除動(dòng)作(Delete元素)。在滾動(dòng)刪除舊的日志文件時(shí),相比使用DefaultRolloverStrategy的max屬性,該功能可以讓用戶擁有更多的刪除控制。刪除動(dòng)作可以讓用戶配置若干個(gè)條件來(lái)刪除相對(duì)于基準(zhǔn)目錄的文件。該功能可以刪除非日志文件,使用時(shí)一定要小心。可以通過(guò)testMode屬性來(lái)測(cè)試配置是否會(huì)錯(cuò)刪文件。basePath屬性值用于指定刪除文件的基準(zhǔn)目錄,必須顯式指定。maxDepth屬性指定掃描目錄的最大層級(jí),0表示僅能訪問(wèn)基準(zhǔn)目錄(安全限制不能訪問(wèn)的情況除外),Integer.MAX_VALUE值表示可以訪問(wèn)所有層級(jí)。默認(rèn)值為1,表示僅掃描基準(zhǔn)目錄下的文件。testMode屬性值如果設(shè)置為true,文件不會(huì)實(shí)際刪除,而是在status logger打印一條INFO級(jí)別的消息,可以使用該功能來(lái)測(cè)試是否會(huì)錯(cuò)刪目標(biāo)文件,默認(rèn)為false。--><!-- 這里的Delete元素配置了每次滾動(dòng)都會(huì)刪除基準(zhǔn)目錄下匹配“*/my_app_debug_*.log.gz”日志文件,只要9分鐘以前的日志文件總大小超過(guò)2MB,或9分鐘以前的日志文件文件總數(shù)超過(guò)2個(gè)就按時(shí)間順序刪除較早的日志文件。該元素可以防止日志文件所在分區(qū)的磁盤空間被占滿。特別需要注意的是,只有在發(fā)生日志滾動(dòng)時(shí)才會(huì)嘗試進(jìn)行刪除,否則即使?jié)M足了刪除條件,但如果沒(méi)有新的滾動(dòng)日志生成的話也不會(huì)發(fā)生刪除操作。 --><Delete basePath="${log_base_path}" maxDepth="2"><!-- Delete元素里可以指定若干個(gè)PathCondition類型的元素。如果指定了不止一個(gè)條件,則這些條件都需要在刪除之前接受某個(gè)路徑。這些條件可以嵌套,只有外部條件接受某個(gè)路徑之后,其內(nèi)部條件才會(huì)決定是否接受該路徑。如果這些條件沒(méi)有嵌套,則它們的執(zhí)行順序是任意的。這些條件也可以通過(guò)使用IfAll, IfAny和IfNot等組合條件進(jìn)行AND、OR和NOT等邏輯運(yùn)算。用戶也可以創(chuàng)建自定義條件或使用內(nèi)置條件:- IfFileName:接受匹配正則表達(dá)式或glob的文件路徑;- IfLastModified:接受比指定時(shí)段早或一樣早的文件;- IfAccumulatedFileCount:在遍歷文件樹時(shí)文件總數(shù)超過(guò)文件數(shù)上限后接受路徑;- IfAccumulatedFileSize:在遍歷文件樹時(shí)文件總大小超過(guò)上限后接受路徑;- IfAll:如果所有內(nèi)嵌條件都接受了某個(gè)路徑才會(huì)接受該路徑,相當(dāng)于AND邏輯,其內(nèi)嵌條件的執(zhí)行順序是任意的;- IfAny:如果任意一個(gè)內(nèi)嵌條件接受了某個(gè)目錄就接受該目錄,相當(dāng)于OR邏輯,其內(nèi)嵌條件的執(zhí)行順序是任意的;- IfNot:如果內(nèi)嵌條件不接受某個(gè)路徑就接收該路徑,相當(dāng)于NOT邏輯。--><!-- IfFileName可以通過(guò)glob(使用受限的模式語(yǔ)言,比正則更簡(jiǎn)單)或regex屬性(正則)來(lái)匹配相對(duì)路徑(相對(duì)于Delete的basePath屬性指定的基準(zhǔn)目錄)--><!-- 當(dāng)外部的條件滿足時(shí)才會(huì)計(jì)算內(nèi)部的條件,內(nèi)部的同級(jí)條件的計(jì)算順序是任意的。 --><IfFileName glob="*/my_app_debug_*.log.gz"><!-- IfLastModified可以通過(guò)age屬性值來(lái)指定接受最后修改時(shí)間為指定時(shí)間或早于指定時(shí)間的路徑,該屬性的值可參考o(jì)rg.apache.logging.log4j.core.appender.rolling.action.Duration.parse(CharSequence text)方法的文檔 --><!-- 這里的IfLastModified指定刪除達(dá)到或超過(guò)60天內(nèi)的文件 --><IfLastModified age="9m"><!-- 這里的IfAny內(nèi)嵌了兩個(gè)PathCondition,表示滿足任意一個(gè)條件即可 --><IfAny><!-- IfAccumulatedFileSize可通過(guò)exceeds屬性值指定一個(gè)文件總大小上限值。如果文件數(shù)超過(guò)了該上限值則刪除文件 --><IfAccumulatedFileSize exceeds="2MB"/><!-- IfAccumulatedFileCount可通過(guò)exceeds屬性值指定一個(gè)文件總數(shù)上限值。如果文件數(shù)超過(guò)了該上限值則刪除文件 --><IfAccumulatedFileCount exceeds="2"/></IfAny></IfLastModified></IfFileName></Delete></DefaultRolloverStrategy></RollingFile><RollingFile name="InfoLogRollingFile" fileName="${log_base_path}/my_app_info.log"filePattern="${log_base_path}/$${date:yyyy_MM_dd}/my_app_info_%d{yyyy_MM_dd_HH}_%i.log.gz"><ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${log_pattern}"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="${max_single_file_size}"/></Policies><DefaultRolloverStrategy fileIndex="nomax"><Delete basePath="${log_base_path}" maxDepth="2"><IfFileName glob="*/my_app_info_*.log.gz"><!-- 這里表示匹配“*/my_app_info_*.log.gz”模式的日志文件的刪除策略如下:- 只要日志文件總數(shù)量超過(guò)5個(gè)就刪除按時(shí)間順序最早的日志文件- 只要日志文件總大小超過(guò)10MB就會(huì)刪除按時(shí)間順序最早的日志文件- 只要日志文件最近修改時(shí)間為9分鐘前或更早就會(huì)刪除按時(shí)間順序最早的日志文件 --><IfAny><IfAccumulatedFileSize exceeds="8MB"/><IfAccumulatedFileCount exceeds="5"/><IfLastModified age="9m"/></IfAny></IfFileName></Delete></DefaultRolloverStrategy></RollingFile><RollingFile name="WarnLogRollingFile" fileName="${log_base_path}/my_app_warn.log"filePattern="${log_base_path}/$${date:yyyy_MM_dd}/my_app_warn_%d{yyyy_MM_dd_HH}_%i.log.gz"><ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${log_pattern}"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="${max_single_file_size}"/></Policies><DefaultRolloverStrategy fileIndex="nomax"><Delete basePath="${log_base_path}" maxDepth="2"><IfFileName glob="*/my_app_warn_*.log.gz"><IfAny><IfAccumulatedFileSize exceeds="3GB"/><IfAccumulatedFileCount exceeds="3000"/><IfLastModified age="30d"/></IfAny></IfFileName></Delete></DefaultRolloverStrategy></RollingFile><RollingFile name="ErrorLogRollingFile" fileName="${log_base_path}/my_app_error.log"filePattern="${log_base_path}/$${date:yyyy_MM_dd}/my_app_error_%d{yyyy_MM_dd_HH}_%i.log.gz"><ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="${log_pattern}"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="${max_single_file_size}"/></Policies><DefaultRolloverStrategy fileIndex="nomax"><Delete basePath="${log_base_path}" maxDepth="2"><IfFileName glob="*/my_app_error_*.log.gz"><IfAny><IfAccumulatedFileSize exceeds="3GB"/><IfAccumulatedFileCount exceeds="3000"/><IfLastModified age="30d"/></IfAny></IfFileName></Delete></DefaultRolloverStrategy></RollingFile><!-- 記錄druid的SQL語(yǔ)句 --><RollingFile name="DruidSqlRollingFile" fileName="${log_base_path}/druid.log"filePattern="${log_base_path}/$${date:yyyy_MM_dd}/druid_%d{yyyy_MM_dd_HH}_%i.log.gz"><PatternLayout pattern="${log_pattern}"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="${max_single_file_size}"/></Policies><DefaultRolloverStrategy fileIndex="nomax"><Delete basePath="${log_base_path}" maxDepth="2" testMode="true"><IfFileName glob="*/druid_*.log.gz"><IfAny><IfAccumulatedFileSize exceeds="3GB"/><IfAccumulatedFileCount exceeds="3000"/><IfLastModified age="30d"/></IfAny></IfFileName></Delete></DefaultRolloverStrategy></RollingFile> </Appenders><!--定義logger,只有定義了logger并引入的appender,appender才會(huì)生效--> <Loggers><!-- 當(dāng)Logger在配置文件中聲明時(shí),就創(chuàng)建了一個(gè)LoggerConfig對(duì)象,兩者一一對(duì)應(yīng),LoggerConfig包含一些Filter、這些Filters用于過(guò)濾傳遞給任意Appender的LogEvent,它還包含一些Appender的引用。Logger本身執(zhí)行無(wú)指向的動(dòng)作,它僅含有一個(gè)與LoggerConfig關(guān)聯(lián)的名稱(通過(guò)name屬性指定),root Logger具有固定的默認(rèn)名稱,其他Logger需要指定各自的name屬性值。LoggerConfig會(huì)被分配一個(gè)日志級(jí)別,通過(guò)level屬性來(lái)指定。內(nèi)建的日志級(jí)別按優(yōu)先級(jí)從高到底排序有:OFF > FATAL >ERROR > WARN > INFO > DEBUG > TRACE > ALL,Log4j 2 也支持自定義的日志級(jí)別。--><Root level="ALL"><AppenderRef ref="Console"/><AppenderRef ref="InfoLogRollingFile"/><AppenderRef ref="WarnLogRollingFile"/><AppenderRef ref="DebugLogRollingFile"/><AppenderRef ref="ErrorLogRollingFile"/></Root><!-- 每個(gè)LoggerConfig的日志級(jí)別如果沒(méi)有顯式配置,則會(huì)繼承其父級(jí)LoggerConfig的日志級(jí)別,而root LoggerConfig如果沒(méi)有配置日志級(jí)別,則會(huì)為其分配一個(gè)默認(rèn)的ERROR級(jí)別 --><!-- 某個(gè)Logger所允許的每條日志打印請(qǐng)求都會(huì)傳遞給其LoggerConfig中的所有Appender,也會(huì)傳遞給該LoggerConfig的parentLoggerConfig中的Appender,這種現(xiàn)象稱為相加性(Additivity)。也就是說(shuō),Appender會(huì)從LoggerConfig的繼承中繼承相加性。這種特性可以用來(lái)匯整某幾個(gè)logger的輸出,可以在聲明Logger的配置文件中設(shè)置additivity="false"來(lái)禁用這種疊加繼承 ,則這個(gè)logger不會(huì)將日志流反饋到root中,可以達(dá)到以logger中配置的appender方式來(lái)輸出日志而其他地方輸出的目的name 為要輸出日志的包名或者類名--><!--記錄druid-sql的記錄--><Logger name="druid.sql.Statement" level="debug" additivity="false"><appender-ref ref="DruidSqlRollingFile"/></Logger><!--過(guò)濾掉spring和mybatis的一些無(wú)用的DEBUG信息--><Logger name="org.springframework" level="INFO"/><Logger name="org.mybatis" level="INFO"/><!--log4j2 自帶過(guò)濾日志--><Logger name="org.apache.catalina.startup.DigesterFactory" level="error"/><Logger name="org.apache.catalina.util.LifecycleBase" level="error"/><Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn"/><Logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/><Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn"/><Logger name="org.crsh.plugin" level="warn"/><Logger name="org.crsh.ssh" level="warn"/><Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error"/><Logger name="org.hibernate.validator.internal.util.Version" level="warn"/><Logger name="org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration" level="warn"/><Logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/><Logger name="org.thymeleaf" level="warn"/> </Loggers>

在這里插入代碼片

總結(jié)

以上是生活随笔為你收集整理的log4j2配置详情的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。