sussudio
Version:
An unofficial VS Code Internal API
38 lines (37 loc) • 1.27 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();
}
}