ConversionPattern,用于按数字顺序排列日志消息

时间:2012-11-21 10:31:04

标签: java log4j

我正在我的应用程序中实现Log4j,如果我希望日志消息按1,2,3顺序编号,那么我需要附加到此字符串

log4j.appender.file.layout.ConversionPattern = ? | %-7p | %-30F | %-5L | %-90m | %d %n

在“?”处的字符串我能写什么,所以我的消息将是序列号。

此致 Mayur

1 个答案:

答案 0 :(得分:0)

您有两种选择:

  • %r是自log4j启动以来的毫秒数
  • 您可以使用%d{ISO8601}或您自己的自定义格式创建可排序日期。

[编辑] 要按顺序对日志消息进行编号,您需要编写自己的PatternLayout。覆盖方法createPatternParser(),以便能够使用自定义模式,例如%S

PatternParser中,覆盖finalizeConverter()以在PatternConverter时添加您自己的c == 'S'

protected
void finalizeConverter(char c) {
     if( 'S' == c ) return SequentialConverter.INSTANCE;
     else return super.finalizeConverter(c);
}

SequentialConverter需要有一个静态计数器。然后,您可以覆盖format()以将计数器添加到日志消息中:

public
void format(StringBuffer sbuf, LoggingEvent e) {
    sbuf.append( counter );
}