package org.flywaydb.commandline;
import org.flywaydb.core.api.FlywayException;
import org.flywaydb.core.api.logging.Log;
import org.flywaydb.core.api.logging.LogCreator;
import org.flywaydb.commandline.ConsoleLog.Level;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
class FileLogCreator implements LogCreator {
private final Level level;
private final Path path;
FileLogCreator(CommandLineArguments commandLineArguments) {
String outputFilepath = "";
if (commandLineArguments.isOutputFileSet()) {
outputFilepath = commandLineArguments.getOutputFile();
} else if (commandLineArguments.isLogFilepathSet()) {
outputFilepath = commandLineArguments.getLogFilepath();
}
this.level = commandLineArguments.getLogLevel();
this.path = Paths.get(outputFilepath);
prepareOutputFile(path);
}
public Log createLogger(Class<?> clazz) {
return new FileLog(path, level);
}
private static void prepareOutputFile(Path path) {
try {
Files.write(path, "".getBytes(), StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE);
} catch(IOException exception) {
throw new FlywayException("Could not initialize log file at " + path + ".", exception);
}
}
}