diff --git a/src/main/java/com/github/joelittlejohn/embedmongo/StartEmbeddedMongoMojo.java b/src/main/java/com/github/joelittlejohn/embedmongo/StartEmbeddedMongoMojo.java index 53e5eae7ad3e686d945b0f65ae7c30a8a8401686..76a7717adec7631f9582c986cf79352414344d60 100644 --- a/src/main/java/com/github/joelittlejohn/embedmongo/StartEmbeddedMongoMojo.java +++ b/src/main/java/com/github/joelittlejohn/embedmongo/StartEmbeddedMongoMojo.java @@ -133,6 +133,18 @@ public class StartEmbeddedMongoMojo extends AbstractMojo { */ private String logging; + /** + * @parameter expression="${embedmongo.logFile}" + * @since 0.1.7 + */ + private String logFile = Loggers.DEFAULT_LOG_FILE_NAME; + + /** + * @parameter expression="${embedmongo.logFileEncoding}" + * @since 0.1.7 + */ + private String logFileEncoding = Loggers.DEFAULT_LOG_FILE_ENCODING; + /** * The proxy user to be used when downloading MongoDB * @@ -204,7 +216,7 @@ public class StartEmbeddedMongoMojo extends AbstractMojo { case CONSOLE: return Loggers.console(); case FILE: - return Loggers.file(); + return Loggers.file(logFile, logFileEncoding); case NONE: return Loggers.none(); default: diff --git a/src/main/java/com/github/joelittlejohn/embedmongo/log/FileOutputStreamProcessor.java b/src/main/java/com/github/joelittlejohn/embedmongo/log/FileOutputStreamProcessor.java index 05d9a4e3001b9ab915da3d2f06276062651bfca6..a4e1c080901d2f7c9bae2a50c4feb2d091941576 100644 --- a/src/main/java/com/github/joelittlejohn/embedmongo/log/FileOutputStreamProcessor.java +++ b/src/main/java/com/github/joelittlejohn/embedmongo/log/FileOutputStreamProcessor.java @@ -24,13 +24,26 @@ import de.flapdoodle.embed.process.io.IStreamProcessor; public class FileOutputStreamProcessor implements IStreamProcessor { private static OutputStreamWriter stream; + + private String logFile; + private String encoding; + + public FileOutputStreamProcessor(String logFile) { + this(logFile, Loggers.DEFAULT_LOG_FILE_ENCODING); + } + + public FileOutputStreamProcessor(String logFile, String encoding) { + setLogFile(logFile); + setEncoding(encoding); + } + @Override public synchronized void process(String block) { try { if (stream == null) { - stream = new OutputStreamWriter(new FileOutputStream("embedmongo.log"), "utf-8"); + stream = new OutputStreamWriter(new FileOutputStream(logFile), encoding); } stream.write(block); @@ -45,4 +58,18 @@ public class FileOutputStreamProcessor implements IStreamProcessor { public void onProcessed() { process("\n"); } + + public void setLogFile(String logFile) { + if (logFile == null || logFile.trim().length() == 0) { + throw new IllegalArgumentException("no logFile given"); + } + this.logFile = logFile; + } + + public void setEncoding(String encoding) { + if (encoding == null || encoding.trim().length() == 0) { + throw new IllegalArgumentException("no encoding given"); + } + this.encoding = encoding; + } } diff --git a/src/main/java/com/github/joelittlejohn/embedmongo/log/Loggers.java b/src/main/java/com/github/joelittlejohn/embedmongo/log/Loggers.java index d831a4e78db1da321ba9d53c1134a143cc42f53a..2e0909bfd7f38f4182a8a2c550d8a4dc2b89a533 100644 --- a/src/main/java/com/github/joelittlejohn/embedmongo/log/Loggers.java +++ b/src/main/java/com/github/joelittlejohn/embedmongo/log/Loggers.java @@ -25,8 +25,11 @@ public class Loggers { FILE, CONSOLE, NONE } - public static ProcessOutput file() { - FileOutputStreamProcessor file = new FileOutputStreamProcessor(); + public static final String DEFAULT_LOG_FILE_NAME = "embedmongo.log"; + public static final String DEFAULT_LOG_FILE_ENCODING = "utf-8"; + + public static ProcessOutput file(String logFile, String encoding) { + FileOutputStreamProcessor file = new FileOutputStreamProcessor(logFile, encoding); return new ProcessOutput( new NamedOutputStreamProcessor("[mongod output]", file),