簡體   English   中英

修剪Log4J消息

[英]Trimming the Log4J Message

我有一個appender,我只想要顯示的消息的前X個字符(例如,我們會說5個)。

我正在使用PatternLayout但我無法獲取正確截斷消息的消息。

例如,如果我的日志消息是

快速的棕色狐狸

我只是想看看:

q

當我在模式中使用它

%0.5米

我明白了

n狐狸

因為那些是最后5個字符。

我看過PattenLayout javadoc,但找不到任何東西。 我知道這有點奇怪,不想看到整個消息,但對於這個特定的appender它是有道理的。 我將整個消息記錄在另一個appender中。 如果可能的話,我想避免編寫自定義類。

默認情況下,截斷是從消息的開頭完成的(與C中的printf不同,后者從末尾開始)。

正確的模式應該是:

%.-5m

編輯:

我剛試過這個,而log4j不喜歡那種模式。 但是,如果可以進行切換,則提供的模式在LOGBack中可以正常工作。 如果您無法切換日志記錄提供程序,則可以對log4j進行一次性修改。 有趣的代碼出現在org.apache.log4j.helpers.PatternConverter的第75-76行:

if(len > max)
  sbuf.append(s.substring(len-max));

這應該是:

if(len > max)
  sbuf.append(s.substring(0,max));

您可以簡單地進行修改並重新編譯jar供您使用,或者您可以繼承PatternConverter以執行正確的截斷。 這還需要一個新版本的PatternLayout,它包含createPatternParser方法,您需要在子類中覆蓋該方法以實例化新版本的PatternConverter。

作為旁注,請注意在特定項目中修改開源代碼的許可后果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM