001package org.nuxeo.ecm.platform.importer.log;
002
003import java.io.File;
004import java.io.FileWriter;
005import java.io.IOException;
006import java.io.Writer;
007
008import org.nuxeo.common.utils.Path;
009import org.nuxeo.runtime.api.Framework;
010
011public class PerfLogger {
012
013    protected String[] headers;
014
015    protected File logFile;
016
017    protected Writer logWriter;
018
019    protected static final String SEP = ";";
020
021    public PerfLogger(String[] headers) throws IOException {
022        this.headers = headers;
023        File home = Framework.getRuntime().getHome();
024        String logPath = new Path(home.getAbsolutePath()).append("perfLog_" + System.currentTimeMillis() + ".csv").toString();
025        logFile = new File(logPath);
026        logWriter = new FileWriter(logFile);
027        log(headers);
028    }
029
030    public void log(String[] data) throws IOException {
031        StringBuffer sb = new StringBuffer();
032        sb.append(System.currentTimeMillis());
033        for (String s : data) {
034            sb.append(SEP);
035            sb.append("\"");
036            sb.append(s);
037            sb.append("\"");
038        }
039        sb.append("\n");
040        logWriter.write(sb.toString());
041    }
042
043    public void log(Double[] data) throws IOException {
044        StringBuffer sb = new StringBuffer();
045        sb.append(System.currentTimeMillis());
046        for (Double d : data) {
047            sb.append(SEP);
048            sb.append(d.toString());
049        }
050        sb.append("\n");
051        logWriter.write(sb.toString());
052        logWriter.flush();
053    }
054
055    public void release() throws IOException {
056        if (logWriter != null) {
057            logWriter.flush();
058            logWriter.close();
059            logWriter = null;
060        }
061    }
062}