UNPKG

@rdfc/sparql-ingest-processor-ts

Version:
55 lines (54 loc) 1.72 kB
import winston, { format } from "winston"; const PROCESSOR_NAME = "sparql-ingest"; const consoleTransport = new winston.transports.Console({ stderrLevels: [ "error", "warn", "info", "http", "verbose", "debug", "silly" ] }); if (typeof process !== "undefined") { 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], }); }