wakaq
Version:
Background task queue for Node backed by Redis, a super minimal Celery
45 lines (44 loc) • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupLogging = exports.Level = void 0;
const winston_1 = require("winston");
var Level;
(function (Level) {
Level["INFO"] = "info";
Level["ERROR"] = "error";
Level["WARN"] = "warn";
Level["DEBUG"] = "debug";
})(Level || (exports.Level = Level = {}));
const setupLogging = (wakaq, isChild = false, isScheduler = false) => {
const level = isScheduler ? wakaq.schedulerLogLevel : wakaq.workerLogLevel;
const logger = (0, winston_1.createLogger)({
level: level,
format: winston_1.format.combine(winston_1.format.errors({ stack: true }), winston_1.format.printf(({ level, message, stack, payload }) => {
if (stack)
message = `${message} - ${stack}`;
if (isChild)
return JSON.stringify({ payload: wakaq.currentTask, level, message });
let prefix = `${new Date().toISOString()} ${level.toUpperCase()}`;
if (payload) {
if (payload?.name) {
prefix = `${prefix} in ${payload.name} args=${JSON.stringify(payload.args ?? [])} retry=${payload.retry ?? 0}`;
}
}
return `${prefix}: ${message}`;
})),
});
const logFile = isScheduler ? wakaq.schedulerLogFile : wakaq.workerLogFile;
if (isChild || !logFile) {
logger.add(new winston_1.transports.Console());
}
else {
logger.add(new winston_1.transports.File({
filename: logFile,
level: level,
handleExceptions: true,
maxsize: 5242880,
}));
}
return logger;
};
exports.setupLogging = setupLogging;