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}