package com.lassekoskela.maven.logging;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
public class FileLog implements Log {
private static final String LINEFEED = System.getProperty("line.separator");
private final File output;
private boolean hasWrittenToLog;
public FileLog(File output) {
this.output = output;
this.hasWrittenToLog = false;
}
@Override
public void info(String message) {
write("info", message);
}
public String destination() {
return output.getPath();
}
private synchronized void write(String level, String message) {
mkdirs(output.getParentFile());
try {
FileWriter w = new FileWriter(output, hasWrittenToLog);
w.append("[").append(level.toUpperCase()).append("] ");
w.append(message).append(LINEFEED);
w.flush();
w.close();
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
hasWrittenToLog = true;
}
}
private void mkdirs(File path) {
if (!path.exists()) {
path.mkdirs();
}
}
}