Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

window vs global loggers #171638

Merged
merged 1 commit into from Jan 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -217,7 +217,7 @@ class SharedProcessMain extends Disposable {
services.set(INativeEnvironmentService, environmentService);

// Logger
const loggerService = new LoggerChannelClient(undefined, this.configuration.logLevel, this.configuration.loggers, mainProcessService.getChannel('logger'));
const loggerService = new LoggerChannelClient(undefined, this.configuration.logLevel, this.configuration.loggers.map(loggerResource => ({ ...loggerResource, resource: URI.revive(loggerResource.resource) })), mainProcessService.getChannel('logger'));
services.set(ILoggerService, loggerService);

// Log
Expand Down
8 changes: 4 additions & 4 deletions src/vs/platform/log/common/log.ts
Expand Up @@ -562,13 +562,13 @@ export abstract class AbstractLoggerService extends Disposable implements ILogge

createLogger(resource: URI, options?: ILoggerOptions, donotRegister?: boolean): ILogger {
let logger = this._loggers.get(resource);
const logLevel = options?.logLevel === 'always' ? LogLevel.Trace : options?.logLevel;
if (!logger) {
const logLevel = options?.logLevel === 'always' ? LogLevel.Trace : options?.logLevel;
logger = this.doCreateLogger(resource, logLevel ?? this.getLogLevel(resource) ?? this.logLevel, options);
this._loggers.set(resource, logger);
if (!donotRegister) {
this.registerLogger({ resource, id: options?.id ?? resource.toString(), logLevel, name: options?.name, hidden: options?.hidden, extensionId: options?.extensionId });
}
}
if (!donotRegister) {
this.registerLogger({ resource, id: options?.id ?? resource.toString(), logLevel, name: options?.name, hidden: options?.hidden, extensionId: options?.extensionId });
}
return logger;
}
Expand Down
6 changes: 3 additions & 3 deletions src/vs/platform/log/common/logIpc.ts
Expand Up @@ -3,16 +3,16 @@
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/

import { URI, UriDto } from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import { Event } from 'vs/base/common/event';
import { IChannel, IServerChannel } from 'vs/base/parts/ipc/common/ipc';
import { AbstractLoggerService, AbstractMessageLogger, AdapterLogger, DidChangeLoggersEvent, ILogger, ILoggerOptions, ILoggerResource, ILoggerService, isLogLevel, LogLevel } from 'vs/platform/log/common/log';
import { Disposable } from 'vs/base/common/lifecycle';

export class LoggerChannelClient extends AbstractLoggerService implements ILoggerService {

constructor(private readonly windowId: number | undefined, logLevel: LogLevel, loggers: UriDto<ILoggerResource>[], private readonly channel: IChannel) {
super(logLevel, loggers.map(loggerResource => ({ ...loggerResource, resource: URI.revive(loggerResource.resource), hidden: loggerResource.hidden || !!loggerResource.extensionId })));
constructor(private readonly windowId: number | undefined, logLevel: LogLevel, loggers: ILoggerResource[], private readonly channel: IChannel) {
super(logLevel, loggers);
this._register(channel.listen<LogLevel | [URI, LogLevel]>('onDidChangeLogLevel', windowId)(arg => {
if (isLogLevel(arg)) {
super.setLogLevel(arg);
Expand Down
2 changes: 1 addition & 1 deletion src/vs/platform/log/electron-main/loggerService.ts
Expand Up @@ -47,7 +47,7 @@ export class LoggerMainService extends LoggerService implements ILoggerMainServi
override getRegisteredLoggers(windowId?: number): ILoggerResource[] {
const resources: ILoggerResource[] = [];
for (const resource of super.getRegisteredLoggers()) {
if (this.isInterestedLoggerResource(resource.resource, windowId)) {
if (windowId === this.loggerResourcesByWindow.get(resource.resource)) {
resources.push(resource);
}
}
Expand Down
5 changes: 4 additions & 1 deletion src/vs/platform/window/common/window.ts
Expand Up @@ -299,7 +299,10 @@ export interface INativeWindowConfiguration extends IWindowConfiguration, Native

isInitialStartup?: boolean;
logLevel: LogLevel;
loggers: UriDto<ILoggerResource>[];
loggers: {
global: UriDto<ILoggerResource>[];
window: UriDto<ILoggerResource>[];
};

fullscreen?: boolean;
maximized?: boolean;
Expand Down
5 changes: 4 additions & 1 deletion src/vs/platform/windows/electron-main/windowImpl.ts
Expand Up @@ -1089,7 +1089,10 @@ export class CodeWindow extends Disposable implements ICodeWindow {
profile: this.profile || this.userDataProfilesService.defaultProfile
};
configuration.logLevel = this.logService.getLevel();
configuration.loggers = this.loggerMainService.getRegisteredLoggers(this.id);
configuration.loggers = {
window: this.loggerMainService.getRegisteredLoggers(this.id),
global: this.loggerMainService.getRegisteredLoggers()
};

// Load config
this.load(configuration, { isReload: true, disableExtensions: cli?.['disable-extensions'] });
Expand Down
5 changes: 4 additions & 1 deletion src/vs/platform/windows/electron-main/windowsMainService.ts
Expand Up @@ -1372,7 +1372,10 @@ export class WindowsMainService extends Disposable implements IWindowsMainServic
filesToWait: options.filesToOpen?.filesToWait,

logLevel: this.logService.getLevel(),
loggers: this.loggerService.getRegisteredLoggers(),
loggers: {
window: [],
global: this.loggerService.getRegisteredLoggers()
},
logsPath: this.environmentMainService.logsPath,

product,
Expand Down
6 changes: 5 additions & 1 deletion src/vs/workbench/electron-sandbox/desktop.main.ts
Expand Up @@ -170,7 +170,11 @@ export class DesktopMain extends Disposable {
serviceCollection.set(INativeWorkbenchEnvironmentService, environmentService);

// Logger
const loggerService = new LoggerChannelClient(this.configuration.windowId, this.configuration.logLevel, this.configuration.loggers, mainProcessService.getChannel('logger'));
const loggers = [
...this.configuration.loggers.global.map(loggerResource => ({ ...loggerResource, resource: URI.revive(loggerResource.resource) })),
...this.configuration.loggers.window.map(loggerResource => ({ ...loggerResource, resource: URI.revive(loggerResource.resource), hidden: true })),
];
const loggerService = new LoggerChannelClient(this.configuration.windowId, this.configuration.logLevel, loggers, mainProcessService.getChannel('logger'));
serviceCollection.set(ILoggerService, loggerService);

// Log
Expand Down
Expand Up @@ -75,7 +75,7 @@ export const TestNativeWindowConfiguration: INativeWindowConfiguration = {
windowId: 0,
machineId: 'testMachineId',
logLevel: LogLevel.Error,
loggers: [],
loggers: { global: [], window: [] },
mainPid: 0,
appRoot: '',
userEnv: {},
Expand Down