1. 程式人生 > >log4j2 自定義級別

log4j2 自定義級別

配置檔案自定義level
<CustomLevels>
<CustomLevel name="TRADE" intLevel="350" />
</CustomLevels>


log4j2還支援在程式碼中定義level,如果是在程式碼中定義,又使用了xml,則必須在xml載入之前定義好,否則在記錄自定義級別日誌時,找不到該級別,從而記錄失敗。 log4j2.xml裡的properties配置必須放在xml檔案的最上面,否則可能會不生效 如果一個appender裡有多個ThresholdFilter,則必須使用Filters標籤將其包裹住 先拒絕不需要的,然後同意需要的日誌級別
<Filters>
<ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="TRADE" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
自定義的Logger
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);
}

}