1. 程式人生 > >Log4j2.xml配置詳解

Log4j2.xml配置詳解

<?xml version="1.0" encoding="UTF-8"?>  
<!-- status=debug 可以檢視log4j的裝配過程 -->  
<configuration status="off" monitorInterval="300">  
    <properties>  
        <property name="LOG_HOME">/Users/td/Documents/Tools/apache-tomcat-8.5.4/bin/devLog</property>
        <property 
name="BACKUP_HOME">{LOG_HOME}/backup</property> <property name="SERVER_NAME">fingerprint</property> </properties> <appenders> <!-- 定義控制檯輸出 --> <Console name="Console" target="SYSTEM_OUT" follow="true"> <PatternLayout pattern
="[fingerprint-console] %date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" /> </Console > <!-- 程式設計師除錯日誌 --> <RollingRandomAccessFile name="DevLog" append="true" fileName="${LOG_HOME}/${SERVER_NAME}" filePattern="${LOG_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH}.log"
> <PatternLayout pattern="[fingerprint] %date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" /> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> </Policies> </RollingRandomAccessFile> <!-- 失敗資料日誌 --> <RollingRandomAccessFile name="ErrorData" append="true" fileName="${LOG_HOME}/ErrorData/${SERVER_NAME}" filePattern="${LOG_HOME}/ErrorData/${SERVER_NAME}.%d{yyyy-MM-dd-HH}.log"> <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n" /> <Policies> <!-- TimeBased Triggering Policy 基於時間的觸發策略。該策略主要是完成周期性的log檔案封存工作。有兩個引數: interval,integer型,指定兩次封存動作之間的時間間隔。單位:以日誌的命名精度來確定單位, 比如上面的filePattern中的yyyy-MM-dd-HH 單位為小時,yyyy-MM-dd-HH-mm 單位為分鐘 modulate,boolean型,說明是否對封存時間進行調製。若modulate=true,則封存時間將以0點為邊界進行偏移計算。 比如,modulate=true,interval=4hours,那麼假設上次封存日誌的時間為03:00,則下次封存日誌的時間為04:00, 之後的封存時間依次為08:00,12:00,16:00,。。。--> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> </Policies> </RollingRandomAccessFile> <!-- 無法解析資料日誌 --> <RollingRandomAccessFile name="UnparseData" append="true" fileName="${LOG_HOME}/UnparseData/${SERVER_NAME}" filePattern="${LOG_HOME}/UnparseData/${SERVER_NAME}.%d{yyyy-MM-dd-HH}.log"> <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n" /> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> </Policies> </RollingRandomAccessFile> <!-- KafkaConsumer日誌資料 --> <RollingRandomAccessFile name="KafkaConsumer" append="true" fileName="${LOG_HOME}/KafkaConsumer/${SERVER_NAME}" filePattern="${LOG_HOME}/KafkaConsumer/${SERVER_NAME}.%d{yyyy-MM-dd-HH}.log"> <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n" /> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> </Policies> </RollingRandomAccessFile> </appenders> <loggers> <!-- 3rdparty Loggers --> <logger name="slf4j2" level="ERROR" /> <logger name="org.springframework.core" level="ERROR" /> <logger name="org.springframework.beans" level="ERROR" /> <logger name="org.springframework.context" level="ERROR" /> <logger name="org.springframework.web" level="ERROR" /> <logger name="com.alibaba.dubbo" level="${logger.level}" /> <logger name="org.hibernate" level="ERROR" /> <logger name="com.mchange.v2" level="ERROR" /> <logger name="org.eclipse.jetty" level="ERROR" /> <logger name="org.apache.zookeeper" level="${logger.level}" /> <!--收集下面logger標籤的資料流日誌的。logger的additivity屬性要設定為true,這樣才能列印在root的appender中 --> <!--一些沒有定義的logger的name也會輸出在root的appender檔案下。比如: public static final Logger unparseLogger = LoggerFactory.getLogger("serializeTools.class"); serializeTools.class類的包名沒有定義<logger name> 那麼他就會在輸出在root下的appender --> <root level="debug"> <appender-ref ref="DevLog" /> <appender-ref ref="Console" /> </root> <logger name="com.embd.fingerprint.record" level="info"> <appender-ref ref="ErrorData" /> </logger> <!--由public static final Logger unparseLogger = LoggerFactory.getLogger("UnparseData"); 定義日誌級別大於info的, info/warn/ERROR/FATAL會被輸出到下面的appender。 --> <logger name="UnparseData" level="info" additivity="false"> <appender-ref ref="UnparseData" /> </logger> <!--public static final Logger KafkaConsumerLogger = LoggerFactory.getLogger("MyKafkaConsumer.class"); MyKafkaConsumer的類名為com.embd.fingerprint.kafka.client.MyKafkaConsumer輸出時就會輸出到下面appender中--> <logger name="com.embd.fingerprint.kafka.client.MyKafkaConsumer" level="debug" additivity="false"> <appender-ref ref="KafkaConsumer"/> </logger> </loggers> </configuration>