diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 4b45a1d37c9..86982258339 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -3930,11 +3930,6 @@ declare module 'vscode' { * [`globalState`](#ExtensionContext.globalState) to store key value data. */ storagePath: string | undefined; - - /** - * A logger - */ - logger: ILogger; } /** @@ -4330,29 +4325,6 @@ declare module 'vscode' { resolveTask(task: Task, token?: CancellationToken): ProviderResult; } - export enum LogLevel { - Trace = 1, - Debug = 2, - Info = 3, - Warning = 4, - Error = 5, - Critical = 6, - Off = 7 - } - - export interface ILogger { - onDidChangeLogLevel: Event; - getLevel(): LogLevel; - getLogDirectory(): Thenable; - - trace(message: string, ...args: any[]): void; - debug(message: string, ...args: any[]): void; - info(message: string, ...args: any[]): void; - warn(message: string, ...args: any[]): void; - error(message: string | Error, ...args: any[]): void; - critical(message: string | Error, ...args: any[]): void; - } - /** * Namespace describing the environment the editor runs in. */ diff --git a/src/vs/vscode.proposed.d.ts b/src/vs/vscode.proposed.d.ts index 566fc38c017..faf05d3ed20 100644 --- a/src/vs/vscode.proposed.d.ts +++ b/src/vs/vscode.proposed.d.ts @@ -326,4 +326,40 @@ declare module 'vscode' { private constructor(enabled: boolean, condition: string, hitCondition: string, functionName: string); } + + /** + * The severity level of a log message + */ + export enum LogLevel { + Trace = 1, + Debug = 2, + Info = 3, + Warning = 4, + Error = 5, + Critical = 6, + Off = 7 + } + + /** + * A logger for writing to an extension's log file, and accessing its dedicated log directory. + */ + export interface Logger { + onDidChangeLogLevel: Event; + readonly currentLevel: LogLevel; + getLogDirectory(): Thenable; + + trace(message: string, ...args: any[]): void; + debug(message: string, ...args: any[]): void; + info(message: string, ...args: any[]): void; + warn(message: string, ...args: any[]): void; + error(message: string | Error, ...args: any[]): void; + critical(message: string | Error, ...args: any[]): void; + } + + export interface ExtensionContext { + /** + * A logger + */ + logger: Logger; + } } diff --git a/src/vs/workbench/api/node/extHostLogService.ts b/src/vs/workbench/api/node/extHostLogService.ts index 347dc8c6be0..a1d017c31b3 100644 --- a/src/vs/workbench/api/node/extHostLogService.ts +++ b/src/vs/workbench/api/node/extHostLogService.ts @@ -40,19 +40,22 @@ export class ExtHostLogService implements ExtHostLogServiceShape { } } -export class ExtHostLogger implements vscode.ILogger { +export class ExtHostLogger implements vscode.Logger { private _currentLevel: LogLevel; - get onDidChangeLogLevel(): Event { return this._extHostLogService.onDidChangeLogLevel; } - constructor( private readonly _extHostLogService: ExtHostLogService, private readonly _logService: ILogService, private readonly _logDirectory: string ) { + this._currentLevel = this._logService.getLevel(); this._extHostLogService.onDidChangeLogLevel(logLevel => this._currentLevel = logLevel); } + get onDidChangeLogLevel(): Event { return this._extHostLogService.onDidChangeLogLevel; } + + get currentLevel(): LogLevel { return this._currentLevel; } + getLogDirectory(): TPromise { return dirExists(this._logDirectory).then(exists => { if (exists) {