From 57fc7c21ac975fb3c886d6c6ade74a6ead825b4d Mon Sep 17 00:00:00 2001 From: Benjamin Pasero Date: Thu, 8 Oct 2020 07:58:08 +0200 Subject: [PATCH] web - add support for setting log level (#108267) --- src/vs/code/browser/workbench/workbench.ts | 21 +++++++++++++++++---- src/vs/platform/log/common/log.ts | 21 ++++++++++++++++----- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/src/vs/code/browser/workbench/workbench.ts b/src/vs/code/browser/workbench/workbench.ts index 0ef8b9dc814..cd6cde15786 100644 --- a/src/vs/code/browser/workbench/workbench.ts +++ b/src/vs/code/browser/workbench/workbench.ts @@ -17,6 +17,7 @@ import { isStandalone } from 'vs/base/browser/browser'; import { localize } from 'vs/nls'; import { Schemas } from 'vs/base/common/network'; import product from 'vs/platform/product/common/product'; +import { getLogLevel, LogLevel } from 'vs/platform/log/common/log'; function doCreateUri(path: string, queryValues: Map): URI { let query: string | undefined = undefined; @@ -416,7 +417,8 @@ class WindowIndicator implements IWindowIndicator { // Find workspace to open and payload let foundWorkspace = false; let workspace: IWorkspace; - let payload = Object.create(null); + let payloadRaw = Object.create(null); + let payloadMap = new Map(); const query = new URL(document.location.href).searchParams; query.forEach((value, key) => { @@ -443,7 +445,10 @@ class WindowIndicator implements IWindowIndicator { // Payload case WorkspaceProvider.QUERY_PARAM_PAYLOAD: try { - payload = JSON.parse(value); + payloadRaw = JSON.parse(value); + if (Array.isArray(payloadRaw)) { + payloadMap = new Map(payloadRaw); + } } catch (error) { console.error(error); // possible invalid JSON } @@ -463,7 +468,7 @@ class WindowIndicator implements IWindowIndicator { } // Workspace Provider - const workspaceProvider = new WorkspaceProvider(workspace, payload); + const workspaceProvider = new WorkspaceProvider(workspace, payloadRaw); // Home Indicator const homeIndicator: IHomeIndicator = { @@ -511,6 +516,13 @@ class WindowIndicator implements IWindowIndicator { } } : undefined; + // log level + let logLevel: LogLevel | undefined = undefined; + const logLevelPayload = payloadMap.get('logLevel'); + if (logLevelPayload) { + logLevel = getLogLevel(logLevelPayload); + } + // Finally create workbench create(document.body, { ...config, @@ -520,6 +532,7 @@ class WindowIndicator implements IWindowIndicator { productQualityChangeHandler, workspaceProvider, urlCallbackProvider: new PollingURLCallbackProvider(), - credentialsProvider: new LocalStorageCredentialsProvider() + credentialsProvider: new LocalStorageCredentialsProvider(), + logLevel }); })(); diff --git a/src/vs/platform/log/common/log.ts b/src/vs/platform/log/common/log.ts index add6b7666af..c3702745b82 100644 --- a/src/vs/platform/log/common/log.ts +++ b/src/vs/platform/log/common/log.ts @@ -414,12 +414,23 @@ export class NullLogService implements ILogService { flush(): void { } } -export function getLogLevel(environmentService: IEnvironmentService): LogLevel { - if (environmentService.verbose) { - return LogLevel.Trace; +export function getLogLevel(environmentService: IEnvironmentService): LogLevel; +export function getLogLevel(logLevel: string): LogLevel; +export function getLogLevel(arg: IEnvironmentService | string): LogLevel { + let rawLogLevel: string | undefined = undefined; + + if (typeof arg !== 'string') { + if (arg.verbose) { + return LogLevel.Trace; + } + + rawLogLevel = arg.logLevel; + } else { + rawLogLevel = arg; } - if (typeof environmentService.logLevel === 'string') { - const logLevel = environmentService.logLevel.toLowerCase(); + + if (typeof rawLogLevel === 'string') { + const logLevel = rawLogLevel.toLowerCase(); switch (logLevel) { case 'trace': return LogLevel.Trace; -- GitLab