fix(lib/vscode): update log service in server.ts

This required a bit more work.

We moved a few things around and made use of multiplexLogService.
This commit is contained in:
Joe Previte 2021-03-11 14:54:38 -07:00
parent eaf63deb56
commit 350ddc3c27
No known key found for this signature in database
GPG Key ID: 2C91590C6B742C24

View File

@ -29,7 +29,7 @@ import { ServiceCollection } from 'vs/platform/instantiation/common/serviceColle
import { ILocalizationsService } from 'vs/platform/localizations/common/localizations';
import { LocalizationsService } from 'vs/platform/localizations/node/localizations';
import { ConsoleLogger, getLogLevel, ILoggerService, ILogService, MultiplexLogService } from 'vs/platform/log/common/log';
import { FollowerLogService, LoggerChannel, LoggerChannelClient } from 'vs/platform/log/common/logIpc';
import { LoggerChannel } from 'vs/platform/log/common/logIpc';
import { LoggerService } from 'vs/platform/log/node/loggerService';
import { SpdLogLogger } from 'vs/platform/log/node/spdlogLog';
import product from 'vs/platform/product/common/product';
@ -217,25 +217,30 @@ export class Vscode {
https://github.com/cdr/code-server/blob/main/lib/vscode/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts#L148
If upstream changes cause conflicts, look there ^.
3/11/21 @jsjoeio
*/
const environmentService = new NativeEnvironmentService(args);
// https://github.com/cdr/code-server/issues/1693
fs.mkdirSync(environmentService.globalStorageHome.fsPath, { recursive: true });
/*
NOTE@coder: Made these updates on 3/11/21 by @jsjoeio
based on this file (and lines):
NOTE@coder: Made these updates on based on this file (and lines):
https://github.com/cdr/code-server/blob/main/lib/vscode/src/vs/code/electron-browser/sharedProcess/sharedProcessMain.ts#L144-L149
More details (from @code-asher):
I think the logLevel channel is only used in the electron version of vscode so we can probably skip it.
With that in mind we wouldn't need logLevelClient which means we wouldn't need the follower service
either and we can use the multiplex log service directly.
3/11/21 @jsjoeio
*/
const mainRouter = new StaticRouter(ctx => ctx === 'main')
const loggerClient = new LoggerChannelClient(this.ipc.getChannel('logger', mainRouter))
const multiplexLogger = new MultiplexLogService([
const logService = new MultiplexLogService([
new ConsoleLogger(getLogLevel(environmentService)),
new SpdLogLogger(RemoteExtensionLogFileName, environmentService.logsPath, false, getLogLevel(environmentService))
])
const logService = new FollowerLogService(loggerClient, multiplexLogger)
const fileService = new FileService(logService);
fileService.registerProvider(Schemas.file, new DiskFileSystemProvider(logService));
const loggerService = new LoggerService(logService, fileService)
const piiPaths = [
path.join(environmentService.userDataPath, 'clp'), // Language packs.
environmentService.appRoot,
@ -245,13 +250,17 @@ export class Vscode {
...environmentService.extraBuiltinExtensionPaths,
];
this.ipc.registerChannel('logger', new LoggerChannel(logService));
this.ipc.registerChannel('logger', new LoggerChannel(loggerService));
this.ipc.registerChannel(ExtensionHostDebugBroadcastChannel.ChannelName, new ExtensionHostDebugBroadcastChannel());
this.services.set(ILogService, logService);
this.services.set(IEnvironmentService, environmentService);
this.services.set(INativeEnvironmentService, environmentService);
this.services.set(ILoggerService, new SyncDescriptor(LoggerService));
/*
NOTE@coder: we changed this from LoggerService to the loggerService defined above.
3/11/21 @jsjoeio
*/
this.services.set(ILoggerService, loggerService);
const configurationService = new ConfigurationService(environmentService.settingsResource, fileService);
await configurationService.initialize();