我正在使用log4j2(version-2.5),我正在嘗試編寫一個消息轉換器插件,它將屏蔽一些日誌消息的已知模式。如何屏蔽log4j2日誌消息
@Plugin(name = "CustomeMasking",
category = "Converter")
@ConverterKeys({"m"})
public class MyCustomFilteringLayout extends LogEventPatternConverter {
}
當我運行我用這個插件的Web應用程序,然後我看到這個警告訊息
WARN轉換鍵「M」已被映射到「類 org.apache.logging.log4j.core .pattern.MessagePatternConverter」。對不起, 戴夫,我不能讓你這樣做!忽略插件[類 MyCustomFilteringLayout]。
在瀏覽log4j2網站後,我找到了這些參考文獻。
如果多個轉換器指定相同ConverterKeys,則上面的負載 順序決定哪一個將被使用。例如,要 覆蓋由內置的 DatePatternConverter類提供的%日期轉換器,您需要將插件放置在LOG4j-core.jar之前的CLASSPATH中的 JAR文件中。這不是建議的 ;模式ConverterKeys碰撞將導致警告 被髮射。嘗試使用獨特的ConverterKeys爲您的自定義模式 轉換器。
我需要幫助瞭解如何爲m/msg編寫自定義轉換器。有沒有更好的方法來做到這一點?
附加信息: 我已經爲MyCustomFilteringLayout創建了陰影罐。我這樣做的原因是我想讓屏蔽邏輯與應用程序分開。
更新
我創建轉換爲自己的鑰匙,看起來像這樣,
@Plugin(name = "CustomeMasking",
category = "Converter")
@ConverterKeys({"cm"})
public class MyCustomFilteringLayout extends LogEventPatternConverter {
}
在這裏我不能再寫轉換器相同ConverterKeys - 釐米? 現在我log4j2.xml具有這種模式佈局,
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %cm %ex%n</Pattern>
</PatternLayout>
只是想知道,你能簡單地使用另一個沒有被現有轉換器採用的密鑰,並相應地改變你的日誌模式嗎? –
如果我這樣做,那麼我不會爲我的密鑰寫多個轉換器,我認爲這不會解決我的使用案例。我的使用案例是,我想掩蓋日誌消息中的某些模式,我在想的是爲不同場景創建多個轉換器。我做錯了嗎?有沒有更好的方法來做到這一點? – Shishir
我假設你想屏蔽日誌事件中的數據,而不是阻止使用某些轉換器密鑰?爲什麼不使用不同的轉換器密鑰來編寫自己的轉換器呢?我不太瞭解你的陳述,你將無法編寫多個轉換器。也許你需要更好地解釋你想達到的目標。 – rgoers