@rdfc/sparql-ingest-processor-ts
Version:
SPARQL Update function to be within RDF-Connect pipelines
55 lines (54 loc) • 1.72 kB
JavaScript
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],
});
}