UNPKG

@sussudio/platform

Version:

Internal APIs for VS Code's service injection the base services.

39 lines (38 loc) 1.13 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { AbstractMessageLogger, DEFAULT_LOG_LEVEL, log } from './log.mjs'; export class BufferLogService extends AbstractMessageLogger { buffer = []; _logger = undefined; constructor(logLevel = DEFAULT_LOG_LEVEL) { super(); this.setLevel(logLevel); this._register( this.onDidChangeLogLevel((level) => { this._logger?.setLevel(level); }), ); } set logger(logger) { this._logger = logger; for (const { level, message } of this.buffer) { log(logger, level, message); } this.buffer = []; } log(level, message) { if (this._logger) { log(this._logger, level, message); } else if (this.getLevel() <= level) { this.buffer.push({ level, message }); } } dispose() { this._logger?.dispose(); } flush() { this._logger?.flush(); } }