2011-04-11 67 views
3

对于%p标志的特定日志消息,我将获得调试或错误或警告。任何人都可以告诉我如何得到前三个字母。例如。只为警告log4j现在显示使用%p的日志消息

+0

does%.3p的工作? – sbridges 2011-04-11 04:31:30

+0

是的,但它记录了最后三个字母。例如ING警告 – user696266 2011-04-11 04:43:14

+0

默认情况下,%.3p从开始处截断。任何人都可以告诉我如何截断 – user696266 2011-04-11 05:08:41

回答

1

执行的子是​​org.apache.log4j.helpers.PatternConverter类,format方法的代码WAR:

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

如果您想打印出来WAR,你应该继承PatternConverter类改变串线成format方法是这样的:

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

那么你也应该写PatternLayout#createPatternParser方法,它具有实例化的一个新版本的PatternConverter的新版本。

希望这会有所帮助。

+0

它的确如此。 :)感谢名单 – user696266 2011-04-11 10:52:15

0

在log4j的2.x中,您可以从最终截断:从最终

截断可能通过期之后追加一个减号 。在这种情况下,如果最大字段宽度为 八,且数据项的长度为十个字符,则删除数据项的最后两个 字符。

链接:https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout

因此,在这种情况下,%.-3p应该给WAR而不是WARNING