UNPKG

@rdfc/file-utils-processors-ts

Version:

File util functions to be used within the RDF-Connect ecosystem

42 lines (41 loc) 1.51 kB
import winston, { format } from "winston"; const PROCESSOR_NAME = "file-utils-processors-ts"; const consoleTransport = new winston.transports.Console(); consoleTransport.level = process.env.LOG_LEVEL || (process.env.DEBUG?.includes(PROCESSOR_NAME) || process.env.DEBUG === "*" ? "debug" : "info"); const classLoggers = new WeakMap(); const stringLoggers = new Map(); export function getLoggerFor(loggable) { let logger; if (typeof loggable === "string") { if (stringLoggers.has(loggable)) { logger = stringLoggers.get(loggable); } else { logger = createLogger(loggable); stringLoggers.set(loggable, logger); } } else { const { constructor } = loggable; if (classLoggers.has(constructor)) { logger = classLoggers.get(constructor); } else { logger = createLogger(constructor.name); classLoggers.set(constructor, logger); } } return logger; } function createLogger(label) { return winston.createLogger({ format: format.combine(format.label({ label }), format.colorize(), format.timestamp(), format.metadata({ fillExcept: ["level", "timestamp", "label", "message"], }), format.printf(({ level: levelInner, message, label: labelInner, timestamp, }) => `${timestamp} {${PROCESSOR_NAME}} [${labelInner}] ${levelInner}: ${message}`)), transports: [consoleTransport], }); }