UNPKG

durabull

Version:

A durable workflow engine built on top of BullMQ and Redis

81 lines (80 loc) 2.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createStructuredLogger = exports.createLoggerFromConfig = exports.getLogger = void 0; const global_1 = require("../config/global"); const noop = () => { /* noop */ }; const noopLogger = { info: noop, warn: noop, error: noop, debug: noop, }; const normalize = (logger) => { if (!logger) { return noopLogger; } return { info: (...args) => { logger.info?.(...args); }, warn: (...args) => { logger.warn?.(...args); }, error: (...args) => { logger.error?.(...args); }, debug: (...args) => { logger.debug?.(...args); }, }; }; const consoleLogger = { info: console.log.bind(console), warn: console.warn.bind(console), error: console.error.bind(console), debug: console.debug.bind(console), }; function getLogger() { const instance = global_1.Durabull.getActive(); if (instance) { return createLoggerFromConfig(instance.getConfig().logger); } return consoleLogger; } exports.getLogger = getLogger; function createLoggerFromConfig(logger) { return normalize(logger); } exports.createLoggerFromConfig = createLoggerFromConfig; /** * Create a structured logger with context */ function createStructuredLogger(context) { const baseLogger = getLogger(); const formatMessage = (...args) => { const contextStr = Object.entries(context) .filter(([_, value]) => value !== undefined) .map(([key, value]) => `${key}=${value}`) .join(' '); const message = args.length > 0 && typeof args[0] === 'string' ? args[0] : ''; const rest = args.length > 1 ? args.slice(1) : []; return [`[${contextStr}] ${message}`, ...rest]; }; return { info: (...args) => { baseLogger.info(...formatMessage(...args)); }, warn: (...args) => { baseLogger.warn(...formatMessage(...args)); }, error: (...args) => { baseLogger.error(...formatMessage(...args)); }, debug: (...args) => { baseLogger.debug(...formatMessage(...args)); }, }; } exports.createStructuredLogger = createStructuredLogger;