@litert/logger
Version:
A logs-recorder for LiteRT framework.
77 lines • 2.69 kB
JavaScript
;
/**
* Copyright 2025 Angus ZENG <fenying@litert.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.createLoggerFactory = createLoggerFactory;
exports.getDefaultLoggerFactory = getDefaultLoggerFactory;
const dL = require("./Decl");
const Logger_1 = require("./Logger");
const Console_1 = require("./Drivers/Console");
const Formatters_1 = require("./Formatters");
class LoggerFactory {
constructor(driver, levels, formatter) {
this.levels = levels;
this._lvOpts = {};
for (const lv of levels) {
this._lvOpts[lv] = {
enabled: true,
traceDepth: 0,
driver,
formatter
};
}
}
setLevelOptions(options) {
const levels = options.levels?.length ?
Array.isArray(options.levels) ? options.levels : [options.levels] :
this.levels;
for (const lv of levels) {
if (!this.levels.includes(lv)) {
continue;
}
this._lvOpts[lv] = {
'traceDepth': Math.max(0, options.traceDepth ?? this._lvOpts[lv]?.traceDepth ?? 0),
'enabled': options.enabled ?? this._lvOpts[lv]?.enabled ?? true,
'driver': options.driver ?? this._lvOpts[lv].driver,
'formatter': options.formatter ?? this._lvOpts[lv].formatter
};
}
return this;
}
getLevelOptions(level) {
return this._lvOpts[level];
}
createLogger(subject) {
return new Logger_1.Logger(subject, this._lvOpts, this.levels);
}
}
/**
* Create a new factory object.
*/
function createLoggerFactory(levels = dL.DEFAULT_LEVELS, driver = (0, Console_1.createConsoleDriver)(), formatter = Formatters_1.DEFAULT_TEXT_FORMATTER) {
return new LoggerFactory(driver, levels, formatter);
}
/**
* The default factory object.
*/
const factory = createLoggerFactory(dL.DEFAULT_LEVELS);
/**
* Get the default factory object.
*/
function getDefaultLoggerFactory() {
return factory;
}
//# sourceMappingURL=Factory.js.map