diff --git a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/LogRedirect.java b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/LogRedirect.java index 7fba9efb1..d328cd3a4 100644 --- a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/LogRedirect.java +++ b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/LogRedirect.java @@ -13,25 +13,27 @@ package org.springframework.ide.vscode.commons.util; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; -import java.io.IOException; import java.io.PrintStream; public class LogRedirect { - public static void bootRedirectToFile(String name) throws IOException { + public static void bootRedirectToFile(String name) { String logfilePath = System.getProperty("sts.log.file"); if (StringUtil.hasText(logfilePath)) { - PrintStream logFile = logFileStream(logfilePath); - System.setErr(logFile); + try { + PrintStream logFile = logFileStream(logfilePath); + System.setErr(logFile); + } catch (FileNotFoundException e) { + System.err.println(e); + System.err.println("Log file '" + logfilePath + "' cannot be found. Ensure that all folders in the path exist!"); + System.setErr(switchOffLogging()); + } } } private static PrintStream logFileStream(String logfilePath) throws FileNotFoundException { if (logfilePath.equals("/dev/null")) { - System.err.println("Disabling server log output. No more output will be sent after this."); - //redirect to a file called "/dev/null" works fine in Unix, but we also want this - // to work on Mac and Windows. So we create our own '/dev/null' stream - return new PrintStream(new NullOutputStream()); + return switchOffLogging(); } else { System.err.println("Redirecting log output to: "+logfilePath); File logfile = new File(logfilePath); @@ -39,13 +41,12 @@ public class LogRedirect { return logFile; } } - - public static void redirectToFile(String name) throws IOException { - String logfilePath = System.getProperty("sts.log.file"); - if (StringUtil.hasText(logfilePath)) { - PrintStream logFile = logFileStream(logfilePath); - System.setErr(logFile); - } - } + private static PrintStream switchOffLogging() { + System.err.println("Disabling server log output. No more output will be sent after this."); + //redirect to a file called "/dev/null" works fine in Unix, but we also want this + // to work on Mac and Windows. So we create our own '/dev/null' stream + return new PrintStream(new NullOutputStream()); + } + }