log4j2 自定義級別
阿新 • • 發佈:2019-02-14
配置檔案自定義level
log4j2還支援在程式碼中定義level,如果是在程式碼中定義,又使用了xml,則必須在xml載入之前定義好,否則在記錄自定義級別日誌時,找不到該級別,從而記錄失敗。 log4j2.xml裡的properties配置必須放在xml檔案的最上面,否則可能會不生效 如果一個appender裡有多個ThresholdFilter,則必須使用Filters標籤將其包裹住 先拒絕不需要的,然後同意需要的日誌級別
<CustomLevels>
<CustomLevel name="TRADE" intLevel="350" />
</CustomLevels>
log4j2還支援在程式碼中定義level,如果是在程式碼中定義,又使用了xml,則必須在xml載入之前定義好,否則在記錄自定義級別日誌時,找不到該級別,從而記錄失敗。 log4j2.xml裡的properties配置必須放在xml檔案的最上面,否則可能會不生效 如果一個appender裡有多個ThresholdFilter,則必須使用Filters標籤將其包裹住 先拒絕不需要的,然後同意需要的日誌級別
自定義的Logger<Filters> <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/> <ThresholdFilter level="TRADE" onMatch="ACCEPT" onMismatch="DENY"/> </Filters>
import org.apache.logging.log4j.Level; import org.apache.logging.log4j.core.Logger; import org.apache.logging.log4j.core.LoggerContext; import org.apache.logging.log4j.message.MessageFactory; public class YygLogger extends Logger { private static final Level TRADE = Level.getLevel("TRADE"); protected YygLogger(LoggerContext context, String name, MessageFactory messageFactory) { super(context, name, messageFactory); } /** * 記錄交易相關的日誌 * * @param message */ public void trade(String message) { super.log(TRADE, message); } }