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 759d77d70..a33705b25 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 @@ -26,8 +26,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.function.Function; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.inject.Provider; @@ -38,6 +36,7 @@ import org.eclipse.lsp4j.services.LanguageClientAware; import org.eclipse.lsp4j.services.LanguageServer; import org.springframework.ide.vscode.commons.languageserver.util.LoggingFormat; import org.springframework.ide.vscode.commons.languageserver.util.SimpleLanguageServer; +import org.springframework.ide.vscode.commons.util.Log; /** @@ -103,28 +102,28 @@ public abstract class LaunguageServerApp { try { in.close(); } catch (IOException e) { - LOG.log(Level.SEVERE, e.getMessage(), e); + Log.log(e); } } if (out != null) { try { out.close(); } catch (IOException e) { - LOG.log(Level.SEVERE, e.getMessage(), e); + Log.log(e); } } if (socket != null) { try { socket.close(); } catch (IOException e) { - LOG.log(Level.SEVERE, e.getMessage(), e); + Log.log(e); } } } } public void start() throws IOException { - LOG.info("Starting LS"); + Log.info("Starting LS"); Connection connection = null; try { LoggingFormat.startLogging(); @@ -132,7 +131,7 @@ public abstract class LaunguageServerApp { run(connection); } catch (Throwable t) { - LOG.log(Level.SEVERE, t.getMessage(), t); + Log.log(t); System.exit(1); } finally { if (connection != null) { @@ -154,7 +153,7 @@ public abstract class LaunguageServerApp { * https://github.com/itemis/xtext-languageserver-example/blob/master/org.xtext.example.mydsl.ide/src/org/xtext/example/mydsl/ide/RunServer.java */ public void startAsServer() throws IOException, InterruptedException { - LOG.info("Starting LS as standlone server"); + Log.info("Starting LS as standlone server"); Function wrapper = consumer -> { MessageConsumer result = consumer; @@ -201,21 +200,19 @@ public abstract class LaunguageServerApp { InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); - LOG.info("Connected to parent using socket on port " + port); + Log.info("Connected to parent using socket on port " + port); return new Connection(in, out, socket); } else { InputStream in = System.in; PrintStream out = System.out; - LOG.info("Connected to parent using stdio"); + Log.info("Connected to parent using stdio"); return new Connection(in, out, null); } } - public static final Logger LOG = Logger.getLogger("main"); - /** * Listen for requests from the parent node process. * Send replies asynchronously. @@ -232,7 +229,7 @@ public abstract class LaunguageServerApp { consumer.consume(msg); } catch (UnsupportedOperationException e) { //log a warning and ignore. We are getting some messages from vsCode the server doesn't know about - LOG.log(Level.WARNING, "Unsupported message was ignored!", e); + Log.warn("Unsupported message was ignored!", e); } }; }; 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..cb1d23c20 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 @@ -16,7 +16,7 @@ import org.slf4j.LoggerFactory; /** * This class is here to make porting old STS code easier. Instead of using this, - * consider using {@link java.util.logging.Logger} directly + * consider using {@link org.slf4j.Logger} directly */ public class Log { diff --git a/vscode-extensions/commons-vscode/src/launch-util.ts b/vscode-extensions/commons-vscode/src/launch-util.ts index 6c04b35fc..5ed9fe1bd 100644 --- a/vscode-extensions/commons-vscode/src/launch-util.ts +++ b/vscode-extensions/commons-vscode/src/launch-util.ts @@ -17,6 +17,7 @@ import * as P2C from 'vscode-languageclient/lib/protocolConverter'; import {WorkspaceEdit, Position} from 'vscode-languageserver-types'; import {HighlightService, HighlightParams} from './highlight-service'; import { log } from 'util'; +import { tmpdir } from 'os'; let p2c = P2C.createConverter(); @@ -90,8 +91,11 @@ export function activate(options: ActivatorOptions, context: VSCode.ExtensionCon cwd: VSCode.workspace.rootPath }; let child: ChildProcess.ChildProcess; + let logfile = Path.join(tmpdir(), options.extensionId + '-' + Date.now()+'.log'); + log('Redirecting server logs to ' + logfile); const args = [ - '-Dserver.port=' + port + '-Dserver.port=' + port, + '-Dorg.slf4j.simpleLogger.logFile=' + logfile ]; if (options.classpath) { const classpath = options.classpath(context);