diff --git a/src/vs/server/node/extensionHostConnection.ts b/src/vs/server/node/extensionHostConnection.ts index aa12dbf4a3d..6f035a8cccb 100644 --- a/src/vs/server/node/extensionHostConnection.ts +++ b/src/vs/server/node/extensionHostConnection.ts @@ -46,7 +46,6 @@ export async function buildUserEnvironment(startParamsEnv: { [key: string]: stri VSCODE_AMD_ENTRYPOINT: 'vs/workbench/api/node/extensionHostProcess', VSCODE_VERBOSE_LOGGING: 'true', VSCODE_HANDLES_UNCAUGHT_ERRORS: 'true', - VSCODE_LOG_STACK: 'false', VSCODE_NLS_CONFIG: JSON.stringify(nlsConfig, undefined, 0) }, ...startParamsEnv diff --git a/src/vs/workbench/api/node/extHostConsoleForwarder.ts b/src/vs/workbench/api/node/extHostConsoleForwarder.ts index dc6250d4def..25e4b293d75 100644 --- a/src/vs/workbench/api/node/extHostConsoleForwarder.ts +++ b/src/vs/workbench/api/node/extHostConsoleForwarder.ts @@ -4,15 +4,17 @@ *--------------------------------------------------------------------------------------------*/ import { MainContext } from 'vs/workbench/api/common/extHost.protocol'; +import { IExtHostInitDataService } from 'vs/workbench/api/common/extHostInitDataService'; import { IExtHostRpcService } from 'vs/workbench/api/common/extHostRpcService'; export class ExtHostConsoleForwarder { constructor( @IExtHostRpcService extHostRpc: IExtHostRpcService, + @IExtHostInitDataService initData: IExtHostInitDataService, ) { const mainThreadConsole = extHostRpc.getProxy(MainContext.MainThreadConsole); - pipeLoggingToParent(); + pipeLoggingToParent(initData.consoleForward.includeStack); // Use IPC messages to forward console-calls, note that the console is // already patched to use`process.send()` @@ -29,7 +31,7 @@ export class ExtHostConsoleForwarder { } // TODO@Alex: remove duplication -function pipeLoggingToParent() { +function pipeLoggingToParent(includeStack: boolean) { const MAX_STREAM_BUFFER_LENGTH = 1024 * 1024; const MAX_LENGTH = 100000; @@ -69,7 +71,7 @@ function pipeLoggingToParent() { // Add the stack trace as payload if we are told so. We remove the message and the 2 top frames // to start the stacktrace where the console message was being written - if (process.env['VSCODE_LOG_STACK'] === 'true') { + if (includeStack) { const stack = new Error().stack; if (stack) { argsArray.push({ __$stack: stack.split('\n').slice(3).join('\n') }); diff --git a/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts b/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts index 62751e8d4d1..f080738692b 100644 --- a/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts +++ b/src/vs/workbench/services/extensions/browser/webWorkerExtensionHost.ts @@ -291,6 +291,9 @@ export class WebWorkerExtensionHost extends Disposable implements IExtensionHost name: this._labelService.getWorkspaceLabel(workspace), transient: workspace.transient }, + consoleForward: { + includeStack: false, + }, allExtensions: deltaExtensions.toAdd, myExtensions: deltaExtensions.myToAdd, telemetryInfo, diff --git a/src/vs/workbench/services/extensions/common/extensionHostProtocol.ts b/src/vs/workbench/services/extensions/common/extensionHostProtocol.ts index ca72df6f92f..b77fc753786 100644 --- a/src/vs/workbench/services/extensions/common/extensionHostProtocol.ts +++ b/src/vs/workbench/services/extensions/common/extensionHostProtocol.ts @@ -31,6 +31,7 @@ export interface IExtensionHostInitData { logFile: URI; autoStart: boolean; remote: { isRemote: boolean; authority: string | undefined; connectionData: IRemoteConnectionData | null }; + consoleForward: { includeStack: boolean }; uiKind: UIKind; messagePorts?: ReadonlyMap; } diff --git a/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts b/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts index 13f08421c35..fc1049cce63 100644 --- a/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts +++ b/src/vs/workbench/services/extensions/common/remoteExtensionHost.ts @@ -242,6 +242,9 @@ export class RemoteExtensionHost extends Disposable implements IExtensionHost { authority: this._initDataProvider.remoteAuthority, connectionData: remoteInitData.connectionData }, + consoleForward: { + includeStack: false, + }, allExtensions: deltaExtensions.toAdd, myExtensions: deltaExtensions.myToAdd, telemetryInfo, diff --git a/src/vs/workbench/services/extensions/electron-sandbox/localProcessExtensionHost.ts b/src/vs/workbench/services/extensions/electron-sandbox/localProcessExtensionHost.ts index 5fb28df7282..ae80c979897 100644 --- a/src/vs/workbench/services/extensions/electron-sandbox/localProcessExtensionHost.ts +++ b/src/vs/workbench/services/extensions/electron-sandbox/localProcessExtensionHost.ts @@ -230,8 +230,7 @@ export class SandboxLocalProcessExtensionHost implements IExtensionHost { VSCODE_AMD_ENTRYPOINT: 'vs/workbench/api/node/extensionHostProcess', VSCODE_VERBOSE_LOGGING: true, VSCODE_LOG_NATIVE: this._isExtensionDevHost, - VSCODE_HANDLES_UNCAUGHT_ERRORS: true, - VSCODE_LOG_STACK: !this._isExtensionDevTestFromCli && (this._isExtensionDevHost || !this._environmentService.isBuilt || this._productService.quality !== 'stable' || this._environmentService.verbose) + VSCODE_HANDLES_UNCAUGHT_ERRORS: true }); if (this._environmentService.debugExtensionHost.env) { @@ -484,6 +483,9 @@ export class SandboxLocalProcessExtensionHost implements IExtensionHost { connectionData: null, isRemote: false }, + consoleForward: { + includeStack: !this._isExtensionDevTestFromCli && (this._isExtensionDevHost || !this._environmentService.isBuilt || this._productService.quality !== 'stable' || this._environmentService.verbose), + }, allExtensions: deltaExtensions.toAdd, myExtensions: deltaExtensions.myToAdd, telemetryInfo,