LOG4J2 完整配置詳解

原因:項目中需要對日志進行過濾

-第一部分:完整配置模板
-第二部分:各模塊介紹
-第三部分:參考引用

log4j2官方測試結(jié)果,速讀領(lǐng)先很明顯

完整配置模板

<?xml version="1.0" encoding="UTF-8"?>
<!--日志級別以及優(yōu)先級排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--status="WARN" :用于設(shè)置log4j2自身內(nèi)部日志的信息輸出級別,默認是OFF-->
<!--monitorInterval="30"  :間隔秒數(shù),自動檢測配置文件的變更和重新配置本身-->
<configuration status="WARN" monitorInterval="30">
    <Properties>
        <!--自定義一些常量,之后使用${變量名}引用-->
        <Property name="logFilePath">log</Property>
        <Property name="logFileName">test.log</Property>
    </Properties>
    <!--appenders:定義輸出內(nèi)容,輸出格式,輸出方式,日志保存策略等,常用其下三種標簽[console,File,RollingFile]-->
    <appenders>
        <!--console :控制臺輸出的配置-->
        <console name="Console" target="SYSTEM_OUT">
            <!--PatternLayout :輸出日志的格式,LOG4J2定義了輸出代碼,詳見第二部分-->
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
        </console>
        <!--File :同步輸出日志到本地文件-->
        <!--append="false" :根據(jù)其下日志策略,每次清空文件重新輸入日志,可用于測試-->
        <File name="log" fileName="${logFilePath}/${logFileName}" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>
        <!--SMTP :郵件發(fā)送日志-->
        <SMTP name="Mail" subject="****SaaS系統(tǒng)正式版異常信息" to="message@message.info" from="message@lengjing.info" smtpUsername="message@message.info" smtpPassword="LENG****1234" smtpHost="mail.lengjing.info" smtpDebug="false" smtpPort="25" bufferSize="10">
            <PatternLayout pattern="[%-5p]:%d{YYYY-MM-dd HH:mm:ss} [%t] %c{1}:%L - %msg%n" />
        </SMTP>
        <!-- ${sys:user.home} :項目路徑 -->
        <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log"
                     filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">
            <!--ThresholdFilter :日志輸出過濾-->
            <!--level="info" :日志級別,onMatch="ACCEPT" :級別在info之上則接受,onMismatch="DENY" :級別在info之下則拒絕-->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <!-- Policies :日志滾動策略-->
            <Policies>
                <!-- TimeBasedTriggeringPolicy :時間滾動策略,默認0點小時產(chǎn)生新的文件,interval="6" : 自定義文件滾動時間間隔,每隔6小時產(chǎn)生新文件, modulate="true" : 產(chǎn)生文件是否以0點偏移時間,即6點,12點,18點,0點-->
                <TimeBasedTriggeringPolicy interval="6" modulate="true"/>
                <!-- SizeBasedTriggeringPolicy :文件大小滾動策略-->
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
            <!-- DefaultRolloverStrategy屬性如不設(shè)置,則默認為最多同一文件夾下7個文件,這里設(shè)置了20 -->
            <DefaultRolloverStrategy max="20"/>
        </RollingFile>

        <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log"
                     filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">
            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
        </RollingFile>
        <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log"
                     filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100 MB"/>
            </Policies>
        </RollingFile>
    </appenders>
    <!--然后定義logger,只有定義了logger并引入的appender,appender才會生效-->
    <loggers>
        <!--過濾掉spring和mybatis的一些無用的DEBUG信息-->
        <!--Logger節(jié)點用來單獨指定日志的形式,name為包路徑,比如要為org.springframework包下所有日志指定為INFO級別等。 -->
        <logger name="org.springframework" level="INFO"></logger>
        <logger name="org.mybatis" level="INFO"></logger>
        <!-- Root節(jié)點用來指定項目的根日志,如果沒有單獨指定Logger,那么就會默認使用該Root日志輸出 -->
        <root level="all">
            <appender-ref ref="Console"/>
            <appender-ref ref="RollingFileInfo"/>
            <appender-ref ref="RollingFileWarn"/>
            <appender-ref ref="RollingFileError"/>
        </root>
        <!--AsyncLogger :異步日志,LOG4J有三種日志模式,全異步日志,混合模式,同步日志,性能從高到底,線程越多效率越高,也可以避免日志卡死線程情況發(fā)生-->
        <!--additivity="false" : additivity設(shè)置事件是否在root logger輸出,為了避免重復(fù)輸出,可以在Logger 標簽下設(shè)置additivity為”false”-->
        <AsyncLogger name="AsyncLogger" level="trace" includeLocation="true" additivity="false">
            <appender-ref ref="RollingFileError"/>
        </AsyncLogger>
    </loggers>
</configuration>

各部分配置介紹

-Appenders:包含以下標簽

FileAppender    普通地輸出到本地文件
FlumeAppender   將幾個不同源的日志匯集、集中到一處
RewriteAppender   對日志事件進行掩碼或注入信息
RollingFileAppender  對日志文件進行封存
RoutingAppender  在輸出地之間進行篩選路由
SMTPAppender  將LogEvent發(fā)送到指定郵件列表
SocketAppender  將LogEvent以普通格式發(fā)送到遠程主機
SyslogAppender  將LogEvent以RFC 5424格式發(fā)送到遠程主機
AsynchAppender   將一個LogEvent異步地寫入多個不同輸出地
ConsoleAppender  將LogEvent輸出到控制臺
FailoverAppender  維護一個隊列,系統(tǒng)將嘗試向隊列中的Appender依次輸出LogEvent,直到有一個成功為止

其中ConsoleAppender、RollingFileAppender和SMTPAppender較為常用
參考log4j的官方文檔

-PatternLayout






%m表示輸出所有message消息
%.300m表示保留message最后30個字符

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 13,945評論 2 59
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,261評論 6 342
  • 旅宿龍口夜未眠 風吹離思敲窗檐 黯海晴空一彎月 輕照海港他鄉(xiāng)船
    雪不快閱讀 195評論 0 0
  • 桌子上放的是大學(xué)期間取得的證書, 它們是敲門磚, 它們是一堆紙。 它們不能代表能力, 它們能夠證明努力。 它們的重...
    日京三撇閱讀 209評論 0 1

友情鏈接更多精彩內(nèi)容