@sussudio/platform
Version:
Internal APIs for VS Code's service injection the base services.
39 lines (38 loc) • 1.13 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* 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();
}
}