UNPKG

knxultimate

Version:

KNX IP protocol implementation for Node. This is the ENGINE of Node-Red KNX-Ultimate node.

76 lines 3.02 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.module = exports.setupLogger = exports.customTransports = exports.customKNXFormat = exports.setLogLevel = exports.logStream = void 0; const winston_1 = __importDefault(require("winston")); const stream_1 = require("stream"); const { format, transports, addColors } = winston_1.default; const { combine, timestamp, label, printf, colorize, splat } = format; const colorizer = colorize(); const MODULES = process.env.LOG_MODULES ? process.env.LOG_MODULES.split(',').map((m) => m.trim().toUpperCase()) : null; exports.logStream = new stream_1.PassThrough({ objectMode: true }); function setLogLevel(level) { logContainer.loggers.forEach((logger) => { const transportsList = logger.transports; transportsList.forEach((t) => { t.level = level; }); logger.configure({ level, transports: transportsList }); }); } exports.setLogLevel = setLogLevel; addColors({ time: 'grey', module: 'bold', }); function customKNXFormat(moduleName) { return combine(splat(), timestamp({ format: 'YYYY-MM-DD HH:mm:ss.SSS' }), format((info) => { info.level = info.level.toUpperCase(); return info; })(), label({ label: moduleName.toUpperCase() }), colorize({ level: true }), printf((info) => { info.timestamp = colorizer.colorize('time', info.timestamp); info.label = colorizer.colorize('module', (info.label || '-')); return `${info.timestamp} ${info.level} ${info.label}: ${info.message}${info.stack ? `\n${info.stack}` : ''}`; })); } exports.customKNXFormat = customKNXFormat; const logModules = (moduleName) => format((info) => !MODULES || MODULES.find((c) => moduleName.toUpperCase().startsWith(c)) ? info : false)(); function customTransports(moduleName) { const formats = MODULES ? [logModules(moduleName)] : []; formats.push(customKNXFormat(moduleName)); const transportsList = [ new transports.Console({ format: combine(...formats), level: process.env.LOG_LEVEL || 'info', stderrLevels: ['error'], }), new winston_1.default.transports.Stream({ stream: exports.logStream, format: combine(...formats), }), ]; return transportsList; } exports.customTransports = customTransports; function setupLogger(container, moduleName) { const logger = container.add(moduleName); logger.configure({ transports: customTransports(moduleName), }); logger.module = moduleName; return logger; } exports.setupLogger = setupLogger; const logContainer = new winston_1.default.Container(); function module(moduleName) { return setupLogger(logContainer, moduleName); } exports.module = module; exports.default = logContainer.loggers; //# sourceMappingURL=KnxLog.js.map