나는 CSV 파일을 만드는 데 필요한 클래스가 있습니다.Logback을 사용하여 로그 파일에 헤더를 추가하는 방법은 무엇입니까?
이 클래스 생성 :
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
? 각 파일의 시작 부분에만 헤더를 표시하고 싶습니다. 중지하고 시작하면 파일에 이미 헤더가 있음을 나타내야하며 추가하지 마십시오.