1. 程式人生 > >log4j2.xml詳細配置

log4j2.xml詳細配置

<!-- status="OFF",可以去掉,它的含義為是否記錄log4j2本身的event資訊,預設是OFF -->
<configuration status="OFF" monitorInterval="60">
    <Properties>
        <!-- (*必須,各應用需要修改) 部署應用的名稱,命名規則 :全部小寫字母、中短橫線、數字,與微服務命名,disconf中命名一致 -->
        <property name="APPNAME">user-info-rest</property>
        <!-- (各應用需要修改)部署應用的埠號,用於一臺伺服器部署多臺應用的情況,如果不需要,保持預設 -->
        <property name="PORT">${sys:crtServerPort:-8080}</property>
        <!-- (各應用需要修改)日誌檔案本地存放目錄路徑 建議各個環境跟生產環境統一起來,方便維護 -->
        <property name="logBaseFolder">/app/user-info-rest/logs</property>


        <!-- 日誌檔名稱的字首部分,以下為建議值 -->
        <property name="logFileNamePrefix">${APPNAME}</property>
        <!-- 日誌檔案最小切割單位 值不做強制要求,建議300MB -->
        <property name="every_file_size">300MB</property>
        <!-- *必須並強制遵守 日誌檔案的編碼 -->
        <property name="log_charset">UTF-8</property>
        <!-- *必須並強制遵守 日誌格式說明: |日誌時間|執行緒id|埠號|應用名稱|類名|方法名|日誌級別|traceId |輸入引數|輸出引數|耗時|任意多個擴充套件欄位|具體列印的msg內容然後換行 -->
        <property name="log_pattern">|%d{yyyy-MM-dd HH:mm:ss.SSS}|%t|${PORT}|${APPNAME}|%logger|%M|%p|%X{MDCCRT_GUID_TRACEID}|###+%X{MDCCRT_EXTENTS}-###|##+%X{MDCCRT_INPUT_PARAM}-##|##+%X{MDCCRT_OUTPUT_PARAM}-##|%X{MDCCRT_COST_TIME}|%m%n</property>
    </Properties>


    <appenders>
        <!-- 用來控制檯輸出 -->
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="${log_pattern}" />
        </Console>


        <!-- 以下是建議的日誌壓縮包目錄的格式名稱 -->
        <!-- all File Config -->
        <RollingRandomAccessFile name="all"
                                 filePattern="${logBaseFolder}/%d{yyyy-MM-dd}/${logFileNamePrefix}-all-%d{yyyyMMdd-HH}.%i.log.gz"
                                 fileName="${logBaseFolder}/${logFileNamePrefix}-all.log"
                                 immediateFlush="false">
            <!-- 日誌輸出格式 -->
            <PatternLayout charset="${log_charset}" pattern="${log_pattern}" />
            <!-- 以下是日誌壓縮包目錄的建議格式名稱 建議1天歸檔依次,壓縮檔案上線建議為200,這裡預估每個磁碟儲存空間200G左右,每個壓縮包最大值200MB -->
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1" />
                <SizeBaseDTriggeringPolicy size="${every_file_size}" />
            </Policies>
            <DefaultRolloverStrategy max="1000" />
            <Filters>
                <!-- 顯示所有資訊 -->
                <ThresholdFilter onMismatch="DENY" onMatch="ACCEPT" level="TRACE" />
            </Filters>
        </RollingRandomAccessFile>


        <!-- error File Config -->
        <RollingRandomAccessFile name="errorLog"
                                 filePattern="${logBaseFolder}/%d{yyyy-MM-dd}/${logFileNamePrefix}-error-%d{yyyyMMdd-HH}.%i.log.gz"
                                 fileName="${logBaseFolder}/${logFileNamePrefix}-error.log"
                                 immediateFlush="false">
            <PatternLayout charset="${log_charset}" pattern="${log_pattern}" />
            <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1" />
                <SizeBaseDTriggeringPolicy size="${every_file_size}" />
            </Policies>
            <Filters>
                <!-- 只顯示error資訊 -->
                <ThresholdFilter onMismatch="DENY" onMatch="ACCEPT" level="ERROR" />
            </Filters>
        </RollingRandomAccessFile>
    </appenders>


    <loggers>
        <!-- 各應用按實際情況自行定義相關類的輸出級別 -->
        <AsyncLogger name="com.luox.user" level="DEBUG" />


        <AsyncLogger name="com.apache" level="WARN" />
        <AsyncLogger name="org.apache.ibatis.jdbc" level="WARN" />


        <AsyncLogger name="org.apache.zookeeper.ClientCnxn" level="WARN" />
        <AsyncLogger name="org.apache.zookeeper.ZooKeeper" level="WARN" />
        <AsyncLogger name="org.apache.commons.httpclient.util.IdleConnectionHandler" level="WARN" />


        <AsyncLogger name="org.apache.http.client.protocol.RequestAddCookies" level="WARN" />


        <AsyncLogger name="org.apache.http.client.protocol.RequestAuthCache" level="WARN" />
        <AsyncLogger name="org.apache.http.impl.conn.PoolingHttpClientConnectionManager" level="WARN" />
        <AsyncLogger name="org.apache.http.impl.execchain.MainClientExec" level="WARN" />
        <AsyncLogger name="org.apache.http.headers" level="WARN" />
        <AsyncLogger name="org.apache.http.wire" level="WARN" />


        <AsyncLogger name="org.apache.activemq.transport.AbstractInactivityMonitor" level="WARN" />


        <AsyncLogger name="com.alibaba.dubbo.remoting.transport.DecodeHandler" level="WARN" />
        <AsyncLogger name="com.alibaba.dubbo.monitor.dubbo.DubboMonitor" level="OFF" />
        <AsyncLogger name="com.alibaba.dubbo.remoting.exchange.support.header.HeartbeatHandler" level="WARN" />
        <AsyncLogger name="com.alibaba.dubbo.remoting.exchange.support.header.HeartBeatTask" level="WARN" />
        <AsyncLogger name="com.alibaba.dubbo.registry.zookeeper.ZookeeperRegistry" level="WARN" />
        <AsyncLogger name="com.alibaba.dubbo.config.AbstractConfig" level="WARN" />


        <AsyncLogger name="com.baidu.disconf.client.config.inner.DisInnerConfigHelper" level="WARN" />
        <AsyncLogger name="com.baidu.disconf.client.config.ConfigMgr" level="WARN" />
        <AsyncLogger name="com.baidu.disconf.core.common.utils.ClassLoaderUtil" level="WARN" />
        <AsyncLogger name="com.baidu.disconf.core.common.utils.http.HttpClientUtil" level="WARN" />


        <AsyncLogger name="org.springframework" level="WARN" />
        <AsyncLogger name="RocketmqRemoting" level="WARN" />
        <AsyncLogger name="RocketmqClient" level="WARN" />
        <AsyncLogger name="org.apache.kafka" level="WARN" />


        <asyncRoot level="INFO">
            <!-- 各應用自行調整,日誌輸出至檔案,自動按時間、按檔案大小進行歸檔 ,生產環境調預設為INFO,如有特殊需求,在disconf動態調級 -->
            <appender-ref level="DEBUG" ref="all" />


            <!-- 日誌輸出至Console,僅在IDE開發時開啟方便開發人員,部署到伺服器之後必須置為OFF,level設定為OFF表示禁用Console控制檯日誌輸出 -->
            <appender-ref level="TRACE" ref="console" />


            <!-- 異常日誌,不用改動 -->
            <appender-ref level="ERROR" ref="errorLog" />
        </asyncRoot>
    </loggers>
</configuration>