Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Csv 如何使用logback在我的日志文件中添加头?_Csv_Logging_Logback_Logback Groovy - Fatal编程技术网

Csv 如何使用logback在我的日志文件中添加头?

Csv 如何使用logback在我的日志文件中添加头?,csv,logging,logback,logback-groovy,Csv,Logging,Logback,Logback Groovy,我有一个类,我需要创建一个csv文件。 到目前为止,我所做的是: 创建此类: public class MyPatternLayout extends PatternLayout { @Override public String getFileHeader() { return "message id, file name, start time, end time, status"; } } 我的日志文件配置如下: <ap

我有一个类,我需要创建一个csv文件。 到目前为止,我所做的是:

创建此类:

public class MyPatternLayout extends PatternLayout {


    @Override
    public String getFileHeader() {
            return "message id, file name, start time, end time, status";
    }

}
我的日志文件配置如下:

    <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>
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

我需要做什么来解决此问题?我只想在每个文件的开头显示标题。如果我停止并启动它,它应该识别文件上已经有一个头,并且不要添加它。

好吧,不知道我是否用最好的方法来做,但是为了解决这个问题,我做了以下操作:

@Override
    public String getFileHeader(){
        boolean constainsHeader = false;
        try {
            BufferedReader br = new BufferedReader(new FileReader(filePath));
            String line = null;
            while ((line = br.readLine()) != null && !constainsHeader) {
                if(line.contains(header)){
                    constainsHeader = true;
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }

        if(constainsHeader){
            return "";
        }
        return header;
    }

基本上,我打开文件,浏览所有行。。。如果我找到标题,我返回空

嗯,我不知道我是不是用最好的方法来解决这个问题,但为了解决这个问题,我做了以下几点:

@Override
    public String getFileHeader(){
        boolean constainsHeader = false;
        try {
            BufferedReader br = new BufferedReader(new FileReader(filePath));
            String line = null;
            while ((line = br.readLine()) != null && !constainsHeader) {
                if(line.contains(header)){
                    constainsHeader = true;
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }

        if(constainsHeader){
            return "";
        }
        return header;
    }

基本上,我打开文件,浏览所有行。。。如果我找到标题,我返回空

是否足够检查文件是否存在且至少有一行?是否足够检查文件是否存在且至少有一行?