UNPKG

cerevox

Version:

TypeScript SDK for browser automation and secure command execution in highly available and scalable micro computer environments

76 lines 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BaseClass = void 0; exports.WithLogger = WithLogger; exports.Logger = Logger; require("reflect-metadata"); const logger_1 = require("../utils/logger"); /** * Logger装饰器配置的Symbol键 */ const LOGGER_CONFIG_KEY = Symbol('loggerConfig'); /** * 封装设置元数据的逻辑 */ function defineLoggerMetadata(target, config) { Reflect.defineMetadata(LOGGER_CONFIG_KEY, config, target); } /** * Logger装饰器 - 用于自动配置类的logger * 支持新旧装饰器模式 */ function WithLogger(config = {}) { return function (target, context) { defineLoggerMetadata(target, config); }; } /** * Logger装饰器 - 自动使用类名作为key * 支持新旧装饰器模式 */ function Logger(additionalBindings) { return function (target, context) { const key = target.name; const config = { key, additionalBindings }; defineLoggerMetadata(target, config); }; } /** * 基类,为所有core模块提供统一的logger初始化功能 */ class BaseClass { /** * 构造函数 * 自动从装饰器元数据中获取logger配置 */ constructor(logLevel) { const constructor = this.constructor; const config = Reflect.getMetadata(LOGGER_CONFIG_KEY, constructor) || {}; // 如果没有配置key,使用类名 const key = config.key || constructor.name; this.className = key; this.logger = (0, logger_1.createClassLogger)(key, config.additionalBindings, logLevel || config.logLevel); // 记录类初始化 // this.logger.debug(`${key} 类初始化完成`); } /** * 获取类名 */ getClassName() { return this.className; } /** * 获取logger实例 */ getLogger() { return this.logger; } /** * 创建子logger */ createChildLogger(bindings) { return this.logger.child(bindings); } } exports.BaseClass = BaseClass; //# sourceMappingURL=base.js.map