mirror of
https://github.com/microsoft/vscode.git
synced 2026-06-01 13:15:50 +01:00
Improvements to logger and netwok requests logging (#175492)
- Able to create logger by passing id - Support when conditions for loggers - Separate logger for all network requests - Log request and response headers - Enable request logger on trace - Add loggerService in CLI
This commit is contained in:
committed by
GitHub
parent
86ed8560d7
commit
52dd56689f
@@ -39,8 +39,7 @@ import { InstantiationService } from 'vs/platform/instantiation/common/instantia
|
||||
import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection';
|
||||
import { ILanguagePackService } from 'vs/platform/languagePacks/common/languagePacks';
|
||||
import { NativeLanguagePackService } from 'vs/platform/languagePacks/node/languagePacks';
|
||||
import { ConsoleLogger, getLogLevel, ILogger, ILogService, LogLevel } from 'vs/platform/log/common/log';
|
||||
import { SpdLogLogger } from 'vs/platform/log/node/spdlogLog';
|
||||
import { ConsoleLogger, getLogLevel, ILogger, ILoggerService, ILogService, LogLevel } from 'vs/platform/log/common/log';
|
||||
import { FilePolicyService } from 'vs/platform/policy/common/filePolicyService';
|
||||
import { IPolicyService, NullPolicyService } from 'vs/platform/policy/common/policy';
|
||||
import { NativePolicyService } from 'vs/platform/policy/node/nativePolicyService';
|
||||
@@ -62,6 +61,8 @@ import { UserDataProfilesReadonlyService } from 'vs/platform/userDataProfile/nod
|
||||
import { resolveMachineId } from 'vs/platform/telemetry/node/telemetryUtils';
|
||||
import { ExtensionsProfileScannerService } from 'vs/platform/extensionManagement/node/extensionsProfileScannerService';
|
||||
import { LogService } from 'vs/platform/log/common/logService';
|
||||
import { LoggerService } from 'vs/platform/log/node/loggerService';
|
||||
import { localize } from 'vs/nls';
|
||||
|
||||
class CliMain extends Disposable {
|
||||
|
||||
@@ -124,15 +125,18 @@ class CliMain extends Disposable {
|
||||
environmentService.extensionsPath
|
||||
].map(path => path ? Promises.mkdir(path, { recursive: true }) : undefined));
|
||||
|
||||
// Logger
|
||||
const loggerService = new LoggerService(getLogLevel(environmentService), environmentService.logsHome);
|
||||
services.set(ILoggerService, loggerService);
|
||||
|
||||
// Log
|
||||
const logLevel = getLogLevel(environmentService);
|
||||
const spdLogLogger = new SpdLogLogger('cli', join(environmentService.logsPath, 'cli.log'), true, false, logLevel);
|
||||
const logger = this._register(loggerService.createLogger('cli', { name: localize('cli', "CLI") }));
|
||||
const otherLoggers: ILogger[] = [];
|
||||
if (logLevel === LogLevel.Trace) {
|
||||
otherLoggers.push(new ConsoleLogger(logLevel));
|
||||
if (loggerService.getLogLevel() === LogLevel.Trace) {
|
||||
otherLoggers.push(new ConsoleLogger(loggerService.getLogLevel()));
|
||||
}
|
||||
|
||||
const logService = this._register(new LogService(spdLogLogger, otherLoggers));
|
||||
const logService = this._register(new LogService(logger, otherLoggers));
|
||||
services.set(ILogService, logService);
|
||||
|
||||
// Files
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
import { RunOnceScheduler } from 'vs/base/common/async';
|
||||
import { onUnexpectedError } from 'vs/base/common/errors';
|
||||
import { Disposable } from 'vs/base/common/lifecycle';
|
||||
import { basename, dirname, join } from 'vs/base/common/path';
|
||||
import { basename, dirname, joinPath } from 'vs/base/common/resources';
|
||||
import { Promises } from 'vs/base/node/pfs';
|
||||
import { IEnvironmentService } from 'vs/platform/environment/common/environment';
|
||||
import { ILogService } from 'vs/platform/log/common/log';
|
||||
@@ -29,10 +29,10 @@ export class LogsDataCleaner extends Disposable {
|
||||
this.logService.trace('[logs cleanup]: Starting to clean up old logs.');
|
||||
|
||||
try {
|
||||
const currentLog = basename(this.environmentService.logsPath);
|
||||
const logsRoot = dirname(this.environmentService.logsPath);
|
||||
const currentLog = basename(this.environmentService.logsHome);
|
||||
const logsRoot = dirname(this.environmentService.logsHome);
|
||||
|
||||
const logFiles = await Promises.readdir(logsRoot);
|
||||
const logFiles = await Promises.readdir(logsRoot.fsPath);
|
||||
|
||||
const allSessions = logFiles.filter(logFile => /^\d{8}T\d{6}$/.test(logFile));
|
||||
const oldSessions = allSessions.sort().filter(session => session !== currentLog);
|
||||
@@ -41,7 +41,7 @@ export class LogsDataCleaner extends Disposable {
|
||||
if (sessionsToDelete.length > 0) {
|
||||
this.logService.trace(`[logs cleanup]: Removing log folders '${sessionsToDelete.join(', ')}'`);
|
||||
|
||||
await Promise.all(sessionsToDelete.map(sessionToDelete => Promises.rm(join(logsRoot, sessionToDelete))));
|
||||
await Promise.all(sessionsToDelete.map(sessionToDelete => Promises.rm(joinPath(logsRoot, sessionToDelete).fsPath)));
|
||||
}
|
||||
} catch (error) {
|
||||
onUnexpectedError(error);
|
||||
|
||||
@@ -14,7 +14,6 @@ import { toErrorMessage } from 'vs/base/common/errorMessage';
|
||||
import { onUnexpectedError, setUnexpectedErrorHandler } from 'vs/base/common/errors';
|
||||
import { combinedDisposable, Disposable, toDisposable } from 'vs/base/common/lifecycle';
|
||||
import { Schemas } from 'vs/base/common/network';
|
||||
import { joinPath } from 'vs/base/common/resources';
|
||||
import { URI } from 'vs/base/common/uri';
|
||||
import { IPCServer, ProxyChannel, StaticRouter } from 'vs/base/parts/ipc/common/ipc';
|
||||
import { Server as UtilityProcessMessagePortServer, once } from 'vs/base/parts/ipc/node/ipc.mp';
|
||||
@@ -233,11 +232,11 @@ class SharedProcessMain extends Disposable {
|
||||
services.set(INativeEnvironmentService, environmentService);
|
||||
|
||||
// Logger
|
||||
const loggerService = new LoggerChannelClient(undefined, this.configuration.logLevel, this.configuration.loggers.map(loggerResource => ({ ...loggerResource, resource: URI.revive(loggerResource.resource) })), mainProcessService.getChannel('logger'));
|
||||
const loggerService = new LoggerChannelClient(undefined, this.configuration.logLevel, environmentService.logsHome, this.configuration.loggers.map(loggerResource => ({ ...loggerResource, resource: URI.revive(loggerResource.resource) })), mainProcessService.getChannel('logger'));
|
||||
services.set(ILoggerService, loggerService);
|
||||
|
||||
// Log
|
||||
const logger = this._register(loggerService.createLogger(joinPath(URI.file(environmentService.logsPath), 'sharedprocess.log'), { id: 'sharedLog', name: localize('sharedLog', "Shared") }));
|
||||
const logger = this._register(loggerService.createLogger('sharedprocess', { name: localize('sharedLog', "Shared") }));
|
||||
const consoleLogger = this._register(new ConsoleLogger(logger.getLevel()));
|
||||
const logService = this._register(new LogService(logger, [consoleLogger]));
|
||||
services.set(ILogService, logService);
|
||||
|
||||
Reference in New Issue
Block a user