UNPKG

@thatcompany/ts-tool

Version:

基于TypeScript编写的工具库

74 lines 2.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LoggerManager = void 0; const tslog_1 = require("tslog"); class LoggerManager { logger; // 打印等级应低于储存等级 printLogLevel; // 储存等级应高于打印等级 storageLogLevel; transports; enable = { print: true, storage: true, }; serializers; levels = ['SILLY', 'TRACE', 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL']; constructor(options) { this.printLogLevel = options?.printLogLevel || 'INFO'; this.storageLogLevel = options?.storageLogLevel || 'INFO'; this.serializers = options?.serializers || []; this.transports = options?.transports || []; this.logger = options?.logger || new tslog_1.Logger({ name: 'TSTool', maskValuesOfKeys: ['password', 'token'], stylePrettyLogs: true, minLevel: this.levels.indexOf(this.printLogLevel), prettyLogTemplate: '{{logLevelName}}\t{{name}}\t{{hh}}:{{MM}}:{{ss}}:{{ms}}\t{{filePathWithLine}}\t\t', prettyLogTimeZone: 'local', ...options?.tslogOptions, }); // 注册自定义传输器 this.logger.attachTransport(this.customTransport.bind(this)); } /** * 获取子日志器 * @param name 日志器名称 * @param shot 是否为简洁模式 * @param options 日志器配置 简洁模式下不需要 */ getSubLogger(name, shot = false, options) { return shot ? this.logger.getSubLogger({ name, prettyLogTemplate: '{{logLevelName}}\t{{name}}\t{{hh}}:{{MM}}:{{ss}}:{{ms}}\t\t', }) : this.logger.getSubLogger({ name, ...options?.tslogOptions }); } customTransport(logObj) { // 序列化 for (const serializer of this.serializers) { logObj = serializer.init(logObj); } // 自定义储存 if (this.enable.storage && this.shouldStore(logObj)) { this.transports.forEach((transport) => transport.exec(logObj)); } } shouldStore(logObj) { return this.levels.indexOf(logObj._meta.logLevelName) >= this.levels.indexOf(this.storageLogLevel); } // 添加新的传输器 addTransport(transport) { this.transports.push(transport); } // 移除传输器 removeTransport(transport) { this.transports = this.transports.filter((t) => t !== transport); } } exports.LoggerManager = LoggerManager; //# sourceMappingURL=LoggerManager.js.map