我正在我的应用程序中实现 Log4j,如果我希望日志消息像 1,2,3 一样按顺序编号,那么我需要附加到这个字符串
log4j.appender.file.layout.ConversionPattern = ? | %-7p | %-30F | %-5L | %-90m | %d %n
"?" 位置的字符串 我可以写什么,这样我的消息就会带有序列号。
问候马尤尔
您有两个选择:
-
%r
是自 log4j 启动以来的毫秒数 - 您可以使用
%d{ISO8601}
或您自己的自定义格式创建可排序的日期。
[编辑] 要按顺序对日志消息进行编号,您需要编写自己的PatternLayout
。覆盖方法createPatternParser()
以便能够使用自定义模式,例如%S
。
在 PatternParser
中,覆盖finalizeConverter()
以在c == 'S'
时添加您自己的PatternConverter
:
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 );
}