@@ -35,8 +35,6 @@ import { SignService } from 'vs/platform/sign/browser/signService';
35
35
import { IWorkbenchConstructionOptions , IWorkbench , ITunnel } from 'vs/workbench/browser/web.api' ;
36
36
import { BrowserStorageService } from 'vs/workbench/services/storage/browser/storageService' ;
37
37
import { IStorageService } from 'vs/platform/storage/common/storage' ;
38
- import { BufferLogger } from 'vs/platform/log/common/bufferLog' ;
39
- import { FileLoggerService } from 'vs/platform/log/common/fileLog' ;
40
38
import { toLocalISOString } from 'vs/base/common/date' ;
41
39
import { isWorkspaceToOpen , isFolderToOpen } from 'vs/platform/window/common/window' ;
42
40
import { getSingleFolderWorkspaceIdentifier , getWorkspaceIdentifier } from 'vs/workbench/services/workspaces/browser/workspaces' ;
@@ -90,6 +88,8 @@ import { VSBuffer } from 'vs/base/common/buffer';
90
88
import { IStoredWorkspace } from 'vs/platform/workspaces/common/workspaces' ;
91
89
import { UserDataProfileInitializer } from 'vs/workbench/services/userDataProfile/browser/userDataProfileInit' ;
92
90
import { UserDataSyncInitializer } from 'vs/workbench/services/userDataSync/browser/userDataSyncInit' ;
91
+ import { BufferLogger } from 'vs/platform/log/common/bufferLog' ;
92
+ import { FileLoggerService } from 'vs/platform/log/common/fileLog' ;
93
93
94
94
export class BrowserMain extends Disposable {
95
95
@@ -247,16 +247,32 @@ export class BrowserMain extends Disposable {
247
247
const environmentService = new BrowserWorkbenchEnvironmentService ( workspace . id , logsPath , this . configuration , productService ) ;
248
248
serviceCollection . set ( IBrowserWorkbenchEnvironmentService , environmentService ) ;
249
249
250
- // Log
251
- const logLevel = getLogLevel ( environmentService ) ;
252
- const bufferLogger = new BufferLogger ( logLevel ) ;
253
- const otherLoggers : ILogger [ ] = [ new ConsoleLogger ( logLevel ) ] ;
250
+ // Files
251
+ const fileLogger = new BufferLogger ( ) ;
252
+ const fileService = this . _register ( new FileService ( fileLogger ) ) ;
253
+ serviceCollection . set ( IWorkbenchFileService , fileService ) ;
254
+
255
+ // Logger
256
+ const loggerService = new FileLoggerService ( getLogLevel ( environmentService ) , logsPath , fileService ) ;
257
+ serviceCollection . set ( ILoggerService , loggerService ) ;
258
+
259
+ // Log Service
260
+ const otherLoggers : ILogger [ ] = [ new ConsoleLogger ( loggerService . getLogLevel ( ) ) ] ;
254
261
if ( environmentService . isExtensionDevelopment && ! ! environmentService . extensionTestsLocationURI ) {
255
- otherLoggers . push ( new ConsoleLogInAutomationLogger ( logLevel ) ) ;
262
+ otherLoggers . push ( new ConsoleLogInAutomationLogger ( loggerService . getLogLevel ( ) ) ) ;
256
263
}
257
- const logService = new LogService ( bufferLogger , otherLoggers ) ;
264
+ const logger = loggerService . createLogger ( environmentService . logFile , { id : windowLogId , name : localize ( 'rendererLog' , "Window" ) } ) ;
265
+ const logService = new LogService ( logger , otherLoggers ) ;
258
266
serviceCollection . set ( ILogService , logService ) ;
259
267
268
+ // Set the logger of the fileLogger after the log service is ready.
269
+ // This is to avoid cyclic dependency
270
+ fileLogger . logger = logService ;
271
+
272
+ // Register File System Providers depending on IndexedDB support
273
+ // Register them early because they are needed for the profiles initialization
274
+ await this . registerIndexedDBFileSystemProviders ( environmentService , fileService , logService , loggerService , logsPath ) ;
275
+
260
276
// Remote
261
277
const connectionToken = environmentService . options . connectionToken || getCookieValue ( connectionTokenCookieName ) ;
262
278
const remoteAuthorityResolverService = new RemoteAuthorityResolverService ( ! environmentService . expectsResolverExtension , connectionToken , this . configuration . resourceUriProvider , productService , logService ) ;
@@ -277,18 +293,6 @@ export class BrowserMain extends Disposable {
277
293
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
278
294
279
295
280
- // Files
281
- const fileService = this . _register ( new FileService ( logService ) ) ;
282
- serviceCollection . set ( IWorkbenchFileService , fileService ) ;
283
-
284
- // Logger
285
- const loggerService = new FileLoggerService ( logLevel , logsPath , fileService ) ;
286
- serviceCollection . set ( ILoggerService , loggerService ) ;
287
-
288
- // Register File System Providers depending on IndexedDB support
289
- // Register them early because they are needed for the profiles initialization
290
- await this . registerIndexedDBFileSystemProviders ( environmentService , fileService , bufferLogger , logService , loggerService , logsPath ) ;
291
-
292
296
// URI Identity
293
297
const uriIdentityService = new UriIdentityService ( fileService ) ;
294
298
serviceCollection . set ( IUriIdentityService , uriIdentityService ) ;
@@ -411,7 +415,7 @@ export class BrowserMain extends Disposable {
411
415
}
412
416
}
413
417
414
- private async registerIndexedDBFileSystemProviders ( environmentService : IWorkbenchEnvironmentService , fileService : IWorkbenchFileService , bufferLogger : BufferLogger , logService : ILogService , loggerService : ILoggerService , logsPath : URI ) : Promise < void > {
418
+ private async registerIndexedDBFileSystemProviders ( environmentService : IWorkbenchEnvironmentService , fileService : IWorkbenchFileService , logService : ILogService , loggerService : ILoggerService , logsPath : URI ) : Promise < void > {
415
419
// IndexedDB is used for logging and user data
416
420
let indexedDB : IndexedDB | undefined ;
417
421
const userDataStore = 'vscode-userdata-store' ;
@@ -435,8 +439,6 @@ export class BrowserMain extends Disposable {
435
439
fileService . registerProvider ( logsPath . scheme , new InMemoryFileSystemProvider ( ) ) ;
436
440
}
437
441
438
- bufferLogger . logger = loggerService . createLogger ( environmentService . logFile , { id : windowLogId , name : localize ( 'rendererLog' , "Window" ) } ) ;
439
-
440
442
// User data
441
443
let userDataProvider ;
442
444
if ( indexedDB ) {
0 commit comments