如何以编程方式确定log4j中何时发生翻转?

时间:2012-07-06 21:40:13

标签: log4j

我正在尝试使用log4j来编写CSV文件。每次创建CSV标头时,必须将其写入日志文件的顶部。例如,所有这些已滚动文件必须具有以下作为日志文件中的第一行:

  

log.0时间戳,名称,分钟,最大值

     

log.1时间戳,名称,最小值,最大值

     

log.2时间戳,名称,最小值,最大值

是否可以确定何时发生翻转以便我可以附加标题?

感谢。

P.S:我知道有很多开源CSV编写器,但我不想使用它们,因为我想在我们的软件中使用现有的日志功能。

2 个答案:

答案 0 :(得分:6)

如果你查看RollingFileAppender的log4j文档,它有一个名为rollOver的方法。

http://logging.apache.org/log4j/1.2/apidocs/index.html

您需要实现一个继承自RollingFileAppender的自定义文件追加器,并覆盖rollOver方法。我想你可以调用super.rollOver,然后在记录任何内容之前将你想要的任何内容作为标题写入新文件。

答案 1 :(得分:0)

我用这个

public class MyRoller extends RollingFileAppender {

@Override
public void rollover() {
    super.rollover();

    final LoggingEvent event = new LoggingEvent();
    event.setMessage("CSV_HEADER;1;2;3;4;...");
    event.setLevel(Level.INFO);

    append(event);
}

}