Skip to content

Commit 71700e7

Browse files
authored
Merge pull request microsoft#172757 from microsoft/sandy081/voluntary-donkey
fix microsoft#172642 (microsoft#172667)
2 parents b229eb5 + c2d5332 commit 71700e7

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

src/vs/platform/log/common/logIpc.ts

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { Event } from 'vs/base/common/event';
88
import { IChannel, IServerChannel } from 'vs/base/parts/ipc/common/ipc';
99
import { AbstractLoggerService, AbstractMessageLogger, AdapterLogger, DidChangeLoggersEvent, ILogger, ILoggerOptions, ILoggerResource, ILoggerService, isLogLevel, LogLevel } from 'vs/platform/log/common/log';
1010
import { Disposable } from 'vs/base/common/lifecycle';
11+
import { IURITransformer } from 'vs/base/common/uriIpc';
1112

1213
export class LoggerChannelClient extends AbstractLoggerService implements ILoggerService {
1314

@@ -110,26 +111,39 @@ class Logger extends AbstractMessageLogger {
110111

111112
export class LoggerChannel implements IServerChannel {
112113

113-
constructor(private readonly loggerService: ILoggerService) { }
114+
constructor(private readonly loggerService: ILoggerService, private getUriTransformer: (requestContext: any) => IURITransformer) { }
114115

115-
listen(_: unknown, event: string, windowId?: number): Event<any> {
116+
listen(context: any, event: string): Event<any> {
117+
const uriTransformer = this.getUriTransformer(context);
116118
switch (event) {
117-
case 'onDidChangeLoggers': return this.loggerService.onDidChangeLoggers;
118-
case 'onDidChangeVisibility': return this.loggerService.onDidChangeVisibility;
119-
case 'onDidChangeLogLevel': return this.loggerService.onDidChangeLogLevel;
119+
case 'onDidChangeLoggers': return Event.map<DidChangeLoggersEvent, DidChangeLoggersEvent>(this.loggerService.onDidChangeLoggers, (e) =>
120+
({
121+
added: [...e.added].map(logger => this.transformLogger(logger, uriTransformer)),
122+
removed: [...e.removed].map(logger => this.transformLogger(logger, uriTransformer)),
123+
}));
124+
case 'onDidChangeVisibility': return Event.map<[URI, boolean], [URI, boolean]>(this.loggerService.onDidChangeVisibility, e => [uriTransformer.transformOutgoingURI(e[0]), e[1]]);
125+
case 'onDidChangeLogLevel': return Event.map<LogLevel | [URI, LogLevel], LogLevel | [URI, LogLevel]>(this.loggerService.onDidChangeLogLevel, e => isLogLevel(e) ? e : [uriTransformer.transformOutgoingURI(e[0]), e[1]]);
120126
}
121127
throw new Error(`Event not found: ${event}`);
122128
}
123129

124-
async call(_: unknown, command: string, arg?: any): Promise<any> {
130+
async call(context: any, command: string, arg?: any): Promise<any> {
131+
const uriTransformer: IURITransformer | null = this.getUriTransformer(context);
125132
switch (command) {
126-
case 'setLogLevel': return isLogLevel(arg[0]) ? this.loggerService.setLogLevel(arg[0]) : this.loggerService.setLogLevel(URI.revive(arg[0]), arg[1]);
127-
case 'getRegisteredLoggers': return Promise.resolve([...this.loggerService.getRegisteredLoggers()]);
133+
case 'setLogLevel': return isLogLevel(arg[0]) ? this.loggerService.setLogLevel(arg[0]) : this.loggerService.setLogLevel(URI.revive(uriTransformer.transformIncoming(arg[0][0])), arg[0][1]);
134+
case 'getRegisteredLoggers': return Promise.resolve([...this.loggerService.getRegisteredLoggers()].map(logger => this.transformLogger(logger, uriTransformer)));
128135
}
129136

130137
throw new Error(`Call not found: ${command}`);
131138
}
132139

140+
private transformLogger(logger: ILoggerResource, transformer: IURITransformer): ILoggerResource {
141+
return {
142+
...logger,
143+
resource: transformer.transformOutgoingURI(logger.resource)
144+
};
145+
}
146+
133147
}
134148

135149
export class RemoteLoggerChannelClient extends Disposable {

src/vs/platform/terminal/node/ptyHostMain.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import { join } from 'vs/base/common/path';
77
import { URI } from 'vs/base/common/uri';
8+
import { DefaultURITransformer } from 'vs/base/common/uriIpc';
89
import { ProxyChannel } from 'vs/base/parts/ipc/common/ipc';
910
import { Server } from 'vs/base/parts/ipc/node/ipc.cp';
1011
import { localize } from 'vs/nls';
@@ -30,7 +31,7 @@ const environmentService = new NativeEnvironmentService(parseArgs(process.argv,
3031

3132
// Logging
3233
const loggerService = new LoggerService(LogLevel.Info);
33-
server.registerChannel(TerminalIpcChannels.Logger, new LoggerChannel(loggerService));
34+
server.registerChannel(TerminalIpcChannels.Logger, new LoggerChannel(loggerService, () => DefaultURITransformer));
3435
const logger = loggerService.createLogger(URI.file(join(environmentService.logsPath, `${TerminalLogConstants.FileName}.log`)), { name: process.env.VSCODE_PTY_LOG_NAME ?? localize('ptyHost', "Pty Host") });
3536
delete process.env.VSCODE_PTY_LOG_NAME;
3637
const logService = new LogService(logger, [new ConsoleLogger()]);

src/vs/server/node/serverServices.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ export async function setupServerServices(connectionToken: ServerConnectionToken
9595

9696
const loggerService = new LoggerService(getLogLevel(environmentService));
9797
services.set(ILoggerService, loggerService);
98-
socketServer.registerChannel('logger', new LoggerChannel(loggerService));
98+
socketServer.registerChannel('logger', new LoggerChannel(loggerService, (ctx: RemoteAgentConnectionContext) => getUriTransformer(ctx.remoteAuthority)));
9999

100100
const logger = loggerService.createLogger(URI.file(path.join(environmentService.logsPath, `${RemoteExtensionLogFileName}.log`)), { id: 'remoteServerLog', name: localize('remoteExtensionLog', "Remote Server") });
101101
const logService = new LogService(logger, [new ServerLogger(getLogLevel(environmentService))]);

0 commit comments

Comments
 (0)