【发布时间】:2016-07-28 17:29:25
【问题描述】:
我有一个类,我需要创建一个 csv 文件。 所以到目前为止我所做的是:
创建了这个类:
public class MyPatternLayout extends PatternLayout {
@Override
public String getFileHeader() {
return "message id, file name, start time, end time, status";
}
}
而我的 logback 文件是这样配置的:
<appender name="METRICSTEST" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>metricstest.csv</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>metricstest-%d{yyyy-ww}.csv.zip</fileNamePattern>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="com.mdw360.actuator.log.layout.MyPatternLayout">
<pattern>%msg%n</pattern>
</layout>
</encoder>
</appender>
<logger name="com.mdw360.actuator.tasks.MetricsLoggingTask" level="INFO" additivity="false">
<appender-ref ref="METRICSTEST" />
</logger>
嗯,我现在发生的事情是:
在我的日志文件中,标题显示了两次。似乎它尝试创建文件两次或类似的东西,因为如果我在文件名上使用时间戳而不是创建 2 个文件。
如果我停止应用程序并重新启动它,我的 csv 文件上会显示更多 2 个标题。
我的日志是这样的:
message id, file name, start time, end time, status
message id, file name, start time, end time, status
First Line
Second Line
Stop Application
message id, file name, start time, end time, status
message id, file name, start time, end time, status
First Line
Second Line
Stop Application
我需要做什么来解决这个问题?我只想在每个文件的开头显示标题。如果我停止并启动它应该确定文件上已经有一个标题并且不要添加它。
【问题讨论】:
标签: csv logging logback logback-groovy