现在对于%p符号的特定日志消息,我将获得调试或错误或警告。谁能告诉我如何只获得前三个字母。例如。只有WAR警告
答案 0 :(得分:1)
执行子字符串的代码位于org.apache.log4j.helpers.PatternConverter
类,format
方法:
if(len > max)
sbuf.append(s.substring(len-max));
如果你想打印出WAR
,你应该将PatternConverter
类子类化为将format
方法更改为if(len > max)
sbuf.append(s.substring(0, max));
方法,如下所示:
PatternLayout#createPatternParser
然后你还应该编写一个新版本的PatternConverter
方法,它必须实例化你的{{1}}新版本。
希望这有帮助。
答案 1 :(得分:0)
在log4j 2.x中,您可以从结尾截断:
可以通过附加减号来截断 在这段时间之后。在这种情况下,如果最大字段宽度是 8,数据项长十个字符,然后是最后两个 删除数据项的字符。
链接:https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout
因此,在这种情况下,%.-3p
应该提供WAR
而不是WARNING
。