From 3b74e3f2bd7ae1290746e4f45d8e79e431f6c221 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Wed, 3 May 2023 14:44:06 +0200 Subject: [PATCH] detect remote loggers in the UI (#181399) --- .../node/sharedProcess/sharedProcessMain.ts | 1 - .../platform/environment/common/environment.ts | 1 - .../platform/request/browser/requestService.ts | 2 +- src/vs/platform/request/common/request.ts | 5 ++--- src/vs/platform/request/node/requestService.ts | 2 +- src/vs/platform/terminal/node/ptyHostMain.ts | 4 +--- src/vs/platform/terminal/node/ptyHostService.ts | 2 -- src/vs/server/node/serverEnvironmentService.ts | 1 - src/vs/server/node/serverServices.ts | 3 +-- .../contrib/logs/common/logs.contribution.ts | 17 +++++++++++++++-- 10 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/vs/code/node/sharedProcess/sharedProcessMain.ts b/src/vs/code/node/sharedProcess/sharedProcessMain.ts index 37ba014a35d..2f8b510ea09 100644 --- a/src/vs/code/node/sharedProcess/sharedProcessMain.ts +++ b/src/vs/code/node/sharedProcess/sharedProcessMain.ts @@ -345,7 +345,6 @@ class SharedProcessMain extends Disposable { shortGraceTime: LocalReconnectConstants.ShortGraceTime, scrollback: configurationService.getValue(TerminalSettingId.PersistentSessionScrollback) ?? 100 }, - false, configurationService, environmentService, logService, diff --git a/src/vs/platform/environment/common/environment.ts b/src/vs/platform/environment/common/environment.ts index dbec787f077..96ccb252006 100644 --- a/src/vs/platform/environment/common/environment.ts +++ b/src/vs/platform/environment/common/environment.ts @@ -145,7 +145,6 @@ export interface INativeEnvironmentService extends IEnvironmentService { disableKeytar?: boolean; crossOriginIsolated?: boolean; - isRemoteServer?: boolean; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // diff --git a/src/vs/platform/request/browser/requestService.ts b/src/vs/platform/request/browser/requestService.ts index a55aca1a72d..f2edce7bc38 100644 --- a/src/vs/platform/request/browser/requestService.ts +++ b/src/vs/platform/request/browser/requestService.ts @@ -22,7 +22,7 @@ export class RequestService extends AbstractRequestService implements IRequestSe @IConfigurationService private readonly configurationService: IConfigurationService, @ILoggerService loggerService: ILoggerService ) { - super(false, loggerService); + super(loggerService); } async request(options: IRequestOptions, token: CancellationToken): Promise { diff --git a/src/vs/platform/request/common/request.ts b/src/vs/platform/request/common/request.ts index 6976e66ebf0..58de4472569 100644 --- a/src/vs/platform/request/common/request.ts +++ b/src/vs/platform/request/common/request.ts @@ -55,12 +55,11 @@ export abstract class AbstractRequestService extends Disposable implements IRequ private counter = 0; constructor( - remote: boolean, loggerService: ILoggerService ) { super(); - this.logger = loggerService.createLogger(remote ? 'remotenetwork' : 'network', { - name: remote ? localize('remote request', "Network Requests (Remote)") : localize('request', "Network Requests"), + this.logger = loggerService.createLogger('network', { + name: localize('request', "Network Requests"), when: CONTEXT_LOG_LEVEL.isEqualTo(LogLevelToString(LogLevel.Trace)).serialize() }); } diff --git a/src/vs/platform/request/node/requestService.ts b/src/vs/platform/request/node/requestService.ts index fa5dddc1897..111d9fb246b 100644 --- a/src/vs/platform/request/node/requestService.ts +++ b/src/vs/platform/request/node/requestService.ts @@ -57,7 +57,7 @@ export class RequestService extends AbstractRequestService implements IRequestSe @ILogService private readonly logService: ILogService, @ILoggerService loggerService: ILoggerService ) { - super(!!environmentService.isRemoteServer, loggerService); + super(loggerService); this.configure(); this._register(configurationService.onDidChangeConfiguration(e => { if (e.affectsConfiguration('http')) { diff --git a/src/vs/platform/terminal/node/ptyHostMain.ts b/src/vs/platform/terminal/node/ptyHostMain.ts index 1156e1c1cec..0ddce4fd239 100644 --- a/src/vs/platform/terminal/node/ptyHostMain.ts +++ b/src/vs/platform/terminal/node/ptyHostMain.ts @@ -30,9 +30,7 @@ const environmentService = new NativeEnvironmentService(parseArgs(process.argv, // Logging const loggerService = new LoggerService(LogLevel.Info, environmentService.logsHome); server.registerChannel(TerminalIpcChannels.Logger, new LoggerChannel(loggerService, () => DefaultURITransformer)); -const isRemote = process.env.VSCODE_PTY_REMOTE === 'true'; -delete process.env.VSCODE_PTY_REMOTE; -const logger = loggerService.createLogger(isRemote ? 'remoteptyhost' : 'ptyhost', { name: isRemote ? localize('remotePtyHost', "Pty Host (Remote)") : localize('ptyHost', "Pty Host") }); +const logger = loggerService.createLogger('ptyhost', { name: localize('ptyHost', "Pty Host") }); const logService = new LogService(logger, [new ConsoleLogger()]); const heartbeatService = new HeartbeatService(); diff --git a/src/vs/platform/terminal/node/ptyHostService.ts b/src/vs/platform/terminal/node/ptyHostService.ts index 75b8ef8d121..f4654e91820 100644 --- a/src/vs/platform/terminal/node/ptyHostService.ts +++ b/src/vs/platform/terminal/node/ptyHostService.ts @@ -79,7 +79,6 @@ export class PtyHostService extends Disposable implements IPtyService { constructor( private readonly _reconnectConstants: IReconnectConstants, - private readonly isRemote: boolean, @IConfigurationService private readonly _configurationService: IConfigurationService, @IEnvironmentService private readonly _environmentService: INativeEnvironmentService, @ILogService private readonly _logService: ILogService, @@ -139,7 +138,6 @@ export class PtyHostService extends Disposable implements IPtyService { args: ['--type=ptyHost', '--logsPath', this._environmentService.logsHome.fsPath], env: { VSCODE_LAST_PTY_ID: lastPtyId, - VSCODE_PTY_REMOTE: this.isRemote, VSCODE_AMD_ENTRYPOINT: 'vs/platform/terminal/node/ptyHostMain', VSCODE_PIPE_LOGGING: 'true', VSCODE_VERBOSE_LOGGING: 'true', // transmit console logs from server to client, diff --git a/src/vs/server/node/serverEnvironmentService.ts b/src/vs/server/node/serverEnvironmentService.ts index 38d70707b0d..432344f146a 100644 --- a/src/vs/server/node/serverEnvironmentService.ts +++ b/src/vs/server/node/serverEnvironmentService.ts @@ -209,6 +209,5 @@ export interface IServerEnvironmentService extends INativeEnvironmentService { } export class ServerEnvironmentService extends NativeEnvironmentService implements IServerEnvironmentService { - get isRemoteServer(): boolean { return true; } override get args(): ServerParsedArgs { return super.args as ServerParsedArgs; } } diff --git a/src/vs/server/node/serverServices.ts b/src/vs/server/node/serverServices.ts index 3384aee71bd..14cc2d722ca 100644 --- a/src/vs/server/node/serverServices.ts +++ b/src/vs/server/node/serverServices.ts @@ -196,8 +196,7 @@ export async function setupServerServices(connectionToken: ServerConnectionToken graceTime: ProtocolConstants.ReconnectionGraceTime, shortGraceTime: ProtocolConstants.ReconnectionShortGraceTime, scrollback: configurationService.getValue(TerminalSettingId.PersistentSessionScrollback) ?? 100 - }, - true + } ); services.set(IPtyService, ptyService); diff --git a/src/vs/workbench/contrib/logs/common/logs.contribution.ts b/src/vs/workbench/contrib/logs/common/logs.contribution.ts index bcaf286a56a..d82da53c453 100644 --- a/src/vs/workbench/contrib/logs/common/logs.contribution.ts +++ b/src/vs/workbench/contrib/logs/common/logs.contribution.ts @@ -24,6 +24,8 @@ import { CancellationToken } from 'vs/base/common/cancellation'; import { IDefaultLogLevelsService } from 'vs/workbench/contrib/logs/common/defaultLogLevels'; import { ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { CounterSet } from 'vs/base/common/map'; +import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'; +import { Schemas } from 'vs/base/common/network'; registerAction2(class extends Action2 { constructor() { @@ -62,6 +64,7 @@ class LogOutputChannels extends Disposable implements IWorkbenchContribution { @ILoggerService private readonly loggerService: ILoggerService, @IContextKeyService private readonly contextKeyService: IContextKeyService, @IFileService private readonly fileService: IFileService, + @IUriIdentityService private readonly uriIdentityService: IUriIdentityService, ) { super(); const contextKey = CONTEXT_LOG_LEVEL.bindTo(contextKeyService); @@ -138,14 +141,24 @@ class LogOutputChannels extends Disposable implements IWorkbenchContribution { } private registerLogChannel(logger: ILoggerResource): void { - if (this.outputChannelRegistry.getChannel(logger.id)) { + const channel = this.outputChannelRegistry.getChannel(logger.id); + if (channel && this.uriIdentityService.extUri.isEqual(channel.file, logger.resource)) { return; } const promise = createCancelablePromise(async token => { await whenProviderRegistered(logger.resource, this.fileService); try { await this.whenFileExists(logger.resource, 1, token); - this.outputChannelRegistry.registerChannel({ id: logger.id, label: logger.name ?? logger.id, file: logger.resource, log: true, extensionId: logger.extensionId }); + const channel = this.outputChannelRegistry.getChannel(logger.id); + if (channel?.file?.scheme === Schemas.vscodeRemote) { + // Re-register the channel with new id and name + this.outputChannelRegistry.removeChannel(channel.id); + this.outputChannelRegistry.registerChannel({ id: `${channel.id}.remote`, label: nls.localize('remote name', "{0} (Remote)", channel.label), file: channel.file, log: channel.log, extensionId: channel.extensionId }); + } + const hasToAppendRemote = channel && logger.resource.scheme === Schemas.vscodeRemote; + const id = hasToAppendRemote ? `${logger.id}.remote` : logger.id; + const label = hasToAppendRemote ? nls.localize('remote name', "{0} (Remote)", logger.name ?? logger.id) : logger.name ?? logger.id; + this.outputChannelRegistry.registerChannel({ id, label, file: logger.resource, log: true, extensionId: logger.extensionId }); } catch (error) { if (!isCancellationError(error)) { this.logService.error('Error while registering log channel', logger.resource.toString(), getErrorMessage(error));