UNPKG

sussudio

Version:

An unofficial VS Code Internal API

38 lines (37 loc) 1.27 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(); } }