UNPKG

@lf-lang/reactor-ts

Version:

A reactor-oriented programming framework in TypeScript

142 lines 4.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Log = void 0; const pino_1 = __importDefault(require("pino")); /** * Utilities for the reactor runtime. * * @author Marten Lohstroh (marten@berkeley.edu) */ /** * Global logging facility that has multiple levels of severity. */ // eslint-disable-next-line @typescript-eslint/no-namespace var Log; (function (Log) { /** * Log levels for `Log`. * This LogLevel is inherited from ULog and is kept for compatibility/abstraction purposes. * As we switch to pinojs, it adds `fatal` but lacks `log`. * @see Log */ let LogLevel; (function (LogLevel) { LogLevel["FATAL"] = "fatal"; LogLevel["ERROR"] = "error"; LogLevel["WARN"] = "warn"; LogLevel["INFO"] = "info"; LogLevel["DEBUG"] = "debug"; })(LogLevel = Log.LogLevel || (Log.LogLevel = {})); /** * Global instance of ulog that performs the logging. */ Log.globalLogger = (0, pino_1.default)({ name: "reactor-ts", transport: { target: "pino-pretty", options: { colorize: true, sync: true, ignore: "pid,hostname,time" } } }); /** * Horizontal rule. */ Log.hr = "=".repeat(80); /** * Map that keeps track of active loggers. */ const loggers = new Map(); /** * Get the logger instance associated with the given module. * If it does not exist, it is created. * @param module The name associated with the logger */ function getInstance(module) { let logger = loggers.get(module); if (logger == null) { logger = Log.globalLogger.child({ module }); loggers.set(module, logger); } return logger; } Log.getInstance = getInstance; function setLevel(severity, module) { if (module != null) { const logger = loggers.get(module); if (logger != null) { logger.level = severity.valueOf(); } return; } Log.globalLogger.level = severity.valueOf(); } Log.setLevel = setLevel; /** * Log a message with severity `severity`. The `message` callback * is only invoked if the ulog instance has a log level higher than * `severity`. * @param obj The object to call the message callback on. * @param message Callback that returns a message string. * @param module The name associated with the logger. * @see LogLevel */ const logWithSeverity = (severity, obj, message, module) => { const logger = module != null ? getInstance(module) : Log.globalLogger; if (!logger.isLevelEnabled(severity.valueOf())) { return; } switch (severity) { case LogLevel.FATAL: { logger.fatal(message.call(obj)); break; } case LogLevel.ERROR: { logger.error(message.call(obj)); break; } case LogLevel.WARN: { logger.warn(message.call(obj)); break; } case LogLevel.INFO: { logger.info(message.call(obj)); break; } case LogLevel.DEBUG: { logger.debug(message.call(obj)); break; } } }; function fatal(obj, message, module) { logWithSeverity(LogLevel.FATAL, obj, message, module); } Log.fatal = fatal; function error(obj, message, module) { logWithSeverity(LogLevel.ERROR, obj, message, module); } Log.error = error; function warn(obj, message, module) { logWithSeverity(LogLevel.WARN, obj, message, module); } Log.warn = warn; function info(obj, message, module) { logWithSeverity(LogLevel.INFO, obj, message, module); } Log.info = info; function log(obj, message, module) { logWithSeverity(LogLevel.INFO, obj, message, module); } Log.log = log; function debug(obj, message, module) { logWithSeverity(LogLevel.DEBUG, obj, message, module); } Log.debug = debug; })(Log || (exports.Log = Log = {})); //# sourceMappingURL=util.js.map