From cd2ab7de2848e99d81f5d6e2008b09f06899a7b6 Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Fri, 17 Nov 2017 15:49:00 -0800 Subject: [PATCH] Second attempt to redirect log output to file First attempt was flawed because some loggers can get instantiated before sysem property is set. --- .../springframework/ide/vscode/boot/java/Main.java | 5 ++++- .../org/springframework/ide/vscode/boot/Main.java | 5 ++++- .../org/springframework/ide/vscode/bosh/Main.java | 5 ++++- .../commons/languageserver/LaunguageServerApp.java | 9 --------- .../ide/vscode/commons/util/Log.java | 14 ++++++++++++++ .../springframework/ide/vscode/concourse/Main.java | 5 ++++- .../ide/vscode/manifest/yaml/Main.java | 6 ++++-- 7 files changed, 34 insertions(+), 15 deletions(-) diff --git a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/Main.java b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/Main.java index 741ee1a12..e916c963a 100644 --- a/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/Main.java +++ b/headless-services/boot-java-language-server/src/main/java/org/springframework/ide/vscode/boot/java/Main.java @@ -14,6 +14,7 @@ import java.io.IOException; import org.springframework.ide.vscode.commons.languageserver.LaunguageServerApp; import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; +import org.springframework.ide.vscode.commons.util.Log; /** * Starts up Language Server process @@ -23,7 +24,9 @@ import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguage public class Main { public static void main(String[] args) throws IOException, InterruptedException { - LaunguageServerApp.start("boot-java-language-server", () -> { + String serverName = "boot-java-language-server"; + Log.redirectToFile(serverName); + LaunguageServerApp.start(serverName, () -> { SimpleLanguageServer server = new BootJavaLanguageServer( BootJavaLanguageServerParams.createDefault() ); diff --git a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/Main.java b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/Main.java index f0cac82e5..6c82ae8aa 100644 --- a/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/Main.java +++ b/headless-services/boot-properties-language-server/src/main/java/org/springframework/ide/vscode/boot/Main.java @@ -13,6 +13,7 @@ package org.springframework.ide.vscode.boot; import java.io.IOException; import org.springframework.ide.vscode.commons.languageserver.LaunguageServerApp; +import org.springframework.ide.vscode.commons.util.Log; /** * Starts up Language Server process @@ -24,7 +25,9 @@ import org.springframework.ide.vscode.commons.languageserver.LaunguageServerApp; public class Main { public static void main(String[] args) throws IOException, InterruptedException { - LaunguageServerApp.start("boot-properties-language-server", + String serverName = "boot-properties-language-server"; + Log.redirectToFile(serverName); + LaunguageServerApp.start(serverName, () -> new BootPropertiesLanguageServer(BootPropertiesLanguageServerParams.createDefault())); } diff --git a/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/Main.java b/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/Main.java index 15fdee491..4629e5229 100644 --- a/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/Main.java +++ b/headless-services/bosh-language-server/src/main/java/org/springframework/ide/vscode/bosh/Main.java @@ -16,11 +16,14 @@ import org.springframework.ide.vscode.bosh.models.BoshCommandCloudConfigProvider import org.springframework.ide.vscode.bosh.models.BoshCommandReleasesProvider; import org.springframework.ide.vscode.bosh.models.BoshCommandStemcellsProvider; import org.springframework.ide.vscode.commons.languageserver.LaunguageServerApp; +import org.springframework.ide.vscode.commons.util.Log; public class Main { public static void main(String[] args) throws IOException, InterruptedException { + String serverName = "bosh-language-server"; + Log.redirectToFile(serverName); BoshCliConfig cliConfig = new BoshCliConfig(); - LaunguageServerApp.start("bosh-language-server", () -> new BoshLanguageServer( + LaunguageServerApp.start(serverName, () -> new BoshLanguageServer( cliConfig, new BoshCommandCloudConfigProvider(cliConfig), new BoshCommandStemcellsProvider(cliConfig), diff --git a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/LaunguageServerApp.java b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/LaunguageServerApp.java index 839e0cde3..759d77d70 100644 --- a/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/LaunguageServerApp.java +++ b/headless-services/commons/commons-language-server/src/main/java/org/springframework/ide/vscode/commons/languageserver/LaunguageServerApp.java @@ -11,7 +11,6 @@ package org.springframework.ide.vscode.commons.languageserver; -import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -63,14 +62,6 @@ public abstract class LaunguageServerApp { public static void start(String name, Provider languageServerFactory) throws IOException, InterruptedException { System.setProperty(STS4_LANGUAGESERVER_NAME, name); //makes it easy to recognize language server processes. - File logfile = null; - if (System.getProperty("org.slf4j.simpleLogger.logFile") == null) { - logfile = File.createTempFile(name, ".log"); - System.setProperty("org.slf4j.simpleLogger.logFile", logfile.toString()); - } else { - logfile = new File(System.getProperty("org.slf4j.simpleLogger.logFile")); - } - System.err.println("Redirecting log output to: "+logfile); LaunguageServerApp app = new LaunguageServerApp() { @Override protected SimpleLanguageServer createServer() { diff --git a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/Log.java b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/Log.java index 75ccf5b1f..a5705585a 100644 --- a/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/Log.java +++ b/headless-services/commons/commons-util/src/main/java/org/springframework/ide/vscode/commons/util/Log.java @@ -11,6 +11,9 @@ package org.springframework.ide.vscode.commons.util; +import java.io.File; +import java.io.IOException; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,4 +56,15 @@ public class Log { logger.warn(msg, e); } + public static void redirectToFile(String name) throws IOException { + File logfile = null; + if (System.getProperty("org.slf4j.simpleLogger.logFile") == null) { + logfile = File.createTempFile(name, ".log"); + System.setProperty("org.slf4j.simpleLogger.logFile", logfile.toString()); + } else { + logfile = new File(System.getProperty("org.slf4j.simpleLogger.logFile")); + } + System.err.println("Redirecting log output to: "+logfile); + } + } diff --git a/headless-services/concourse-language-server/src/main/java/org/springframework/ide/vscode/concourse/Main.java b/headless-services/concourse-language-server/src/main/java/org/springframework/ide/vscode/concourse/Main.java index 3284253c5..ef6fce397 100644 --- a/headless-services/concourse-language-server/src/main/java/org/springframework/ide/vscode/concourse/Main.java +++ b/headless-services/concourse-language-server/src/main/java/org/springframework/ide/vscode/concourse/Main.java @@ -14,12 +14,15 @@ package org.springframework.ide.vscode.concourse; import java.io.IOException; import org.springframework.ide.vscode.commons.languageserver.LaunguageServerApp; +import org.springframework.ide.vscode.commons.util.Log; import org.springframework.ide.vscode.commons.yaml.completion.YamlCompletionEngineOptions; public class Main { private static final YamlCompletionEngineOptions OPTIONS = YamlCompletionEngineOptions.DEFAULT; public static void main(String[] args) throws IOException, InterruptedException { - LaunguageServerApp.start("concourse-language-server", () -> new ConcourseLanguageServer(OPTIONS)); + String serverName = "concourse-language-server"; + Log.redirectToFile(serverName); + LaunguageServerApp.start(serverName, () -> new ConcourseLanguageServer(OPTIONS)); } } diff --git a/headless-services/manifest-yaml-language-server/src/main/java/org/springframework/ide/vscode/manifest/yaml/Main.java b/headless-services/manifest-yaml-language-server/src/main/java/org/springframework/ide/vscode/manifest/yaml/Main.java index 5e9104ea1..228bf7263 100644 --- a/headless-services/manifest-yaml-language-server/src/main/java/org/springframework/ide/vscode/manifest/yaml/Main.java +++ b/headless-services/manifest-yaml-language-server/src/main/java/org/springframework/ide/vscode/manifest/yaml/Main.java @@ -10,17 +10,19 @@ *******************************************************************************/ package org.springframework.ide.vscode.manifest.yaml; -import java.io.File; import java.io.IOException; import org.springframework.ide.vscode.commons.languageserver.LaunguageServerApp; import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; +import org.springframework.ide.vscode.commons.util.Log; public class Main { SimpleLanguageServer server = new ManifestYamlLanguageServer(); public static void main(String[] args) throws IOException, InterruptedException { - LaunguageServerApp.start("manifest-yaml-language-server", ManifestYamlLanguageServer::new); + String serverName = "manifest-yaml-language-server"; + Log.redirectToFile(serverName); + LaunguageServerApp.start(serverName, ManifestYamlLanguageServer::new); } }