diff --git a/extensions/typescript-language-features/src/tsServer/serverProcess.browser.ts b/extensions/typescript-language-features/src/tsServer/serverProcess.browser.ts index b73c8f95cc137..e47ad7803aa2f 100644 --- a/extensions/typescript-language-features/src/tsServer/serverProcess.browser.ts +++ b/extensions/typescript-language-features/src/tsServer/serverProcess.browser.ts @@ -30,7 +30,7 @@ type BrowserWatchEvent = { export class WorkerServerProcess implements TsServerProcess { @memoize - private static get output(): vscode.OutputChannel { + private static get tsServerlogOutputChannel(): vscode.OutputChannel { return vscode.window.createOutputChannel(vscode.l10n.t("TypeScript Server Log")); } @@ -118,7 +118,7 @@ export class WorkerServerProcess implements TsServerProcess { this.worker.onmessage = (msg: any) => { // for logging only if (msg.data.type === 'log') { - this.appendOutput(msg.data.body); + this.appendLog(msg.data.body); return; } console.error(`unexpected message on main channel: ${JSON.stringify(msg)}`); @@ -132,7 +132,6 @@ export class WorkerServerProcess implements TsServerProcess { } }; - this.appendOutput(`creating new MessageChannel and posting its port2 + args: ${args.join(' ')}\n`); this.worker.postMessage( { args, extensionUri }, [syncChannel.port1, tsserverChannel.port1, watcherChannel.port1] @@ -141,7 +140,6 @@ export class WorkerServerProcess implements TsServerProcess { const connection = new ServiceConnection(syncChannel.port2); new ApiService('vscode-wasm-typescript', connection); connection.signalReady(); - this.appendOutput('done constructing WorkerServerProcess\n'); } write(serverRequest: Proto.Request): void { @@ -168,8 +166,8 @@ export class WorkerServerProcess implements TsServerProcess { this.syncFs.close(); } - private appendOutput(msg: string) { - WorkerServerProcess.output.append(`(${this.id} - ${this.kind}) ${msg}`); + private appendLog(msg: string) { + WorkerServerProcess.tsServerlogOutputChannel.appendLine(`(${this.id} - ${this.kind}) ${msg}`); } } diff --git a/extensions/typescript-language-features/web/webServer.ts b/extensions/typescript-language-features/web/webServer.ts index ffc0d658a29cc..a8acd853ccdb4 100644 --- a/extensions/typescript-language-features/web/webServer.ts +++ b/extensions/typescript-language-features/web/webServer.ts @@ -588,27 +588,43 @@ async function initializeSession(args: string[], extensionUri: URI, ports: { tss session.listen(); } +function parseLogLevel(input: string | undefined): ts.server.LogLevel | undefined { + switch (input) { + case 'normal': return ts.server.LogLevel.normal; + case 'terse': return ts.server.LogLevel.terse; + case 'verbose': return ts.server.LogLevel.verbose; + default: return undefined; + } +} let hasInitialized = false; const listener = async (e: any) => { if (!hasInitialized) { hasInitialized = true; if ('args' in e.data) { + const args = e.data.args; + + const logLevel = parseLogLevel(findArgument(args, '--logVerbosity')); + const doLog = typeof logLevel === 'undefined' + ? (_message: string) => { } + : (message: string) => { postMessage({ type: 'log', body: message }); }; + const logger: ts.server.Logger = { close: () => { }, - hasLevel: level => level <= ts.server.LogLevel.verbose, + hasLevel: level => typeof logLevel === 'undefined' ? false : level <= logLevel, loggingEnabled: () => true, perftrc: () => { }, - info: s => postMessage({ type: 'log', body: s + '\n' }), - msg: s => postMessage({ type: 'log', body: s + '\n' }), + info: doLog, + msg: doLog, startGroup: () => { }, endGroup: () => { }, - getLogFileName: () => 'tsserver.log', + getLogFileName: () => undefined }; + const [sync, tsserver, watcher] = e.ports as MessagePort[]; const extensionUri = URI.from(e.data.extensionUri); watcher.onmessage = (e: any) => updateWatch(e.data.event, URI.from(e.data.uri), extensionUri); - await initializeSession(e.data.args, extensionUri, { sync, tsserver, watcher }, logger); + await initializeSession(args, extensionUri, { sync, tsserver, watcher }, logger); } else { console.error('unexpected message in place of initial message: ' + JSON.stringify(e.data)); } @@ -617,4 +633,3 @@ const listener = async (e: any) => { console.error(`unexpected message on main channel: ${JSON.stringify(e)}`); }; addEventListener('message', listener); -