restifyx.js
Version:
Advanced API endpoint handler system with automatic documentation
104 lines • 4.28 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.stream = void 0;
exports.setupLogger = setupLogger;
exports.getLogger = getLogger;
const winston_1 = __importDefault(require("winston"));
const winston_daily_rotate_file_1 = __importDefault(require("winston-daily-rotate-file"));
const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs"));
let loggerInstance;
function setupLogger(config) {
const levels = {
error: 0,
warn: 1,
info: 2,
http: 3,
debug: 4,
silly: 5,
};
const colors = {
error: "red",
warn: "yellow",
info: "green",
http: "magenta",
debug: "blue",
silly: "grey",
};
winston_1.default.addColors(colors);
const consoleFormat = winston_1.default.format.combine(winston_1.default.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss:ms" }), config.colorize ? winston_1.default.format.colorize({ all: true }) : winston_1.default.format.uncolorize(), winston_1.default.format.printf((info) => `${config.timestamp ? info.timestamp : ""} ${info.level}: ${info.message}${info.error ? ` - ${info.error instanceof Error ? info.error.stack : JSON.stringify(info.error)}` : ""}`));
const fileFormat = winston_1.default.format.combine(winston_1.default.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss:ms" }), config.json ? winston_1.default.format.json() : winston_1.default.format.simple());
const transports = [];
if (config.console) {
transports.push(new winston_1.default.transports.Console({ format: consoleFormat }));
}
if (config.files) {
const logsDir = path_1.default.join(process.cwd(), config.directory);
if (!fs_1.default.existsSync(logsDir)) {
fs_1.default.mkdirSync(logsDir, { recursive: true });
}
const fileTransport = new winston_daily_rotate_file_1.default({
filename: path_1.default.join(logsDir, "application-%DATE%.log"),
datePattern: "YYYY-MM-DD",
zippedArchive: config.compress,
maxSize: config.maxSize,
maxFiles: config.maxFiles,
format: fileFormat,
});
transports.push(fileTransport);
if (config.errorFile) {
const errorFileTransport = new winston_daily_rotate_file_1.default({
filename: path_1.default.join(logsDir, "error-%DATE%.log"),
datePattern: "YYYY-MM-DD",
zippedArchive: config.compress,
maxSize: config.maxSize,
maxFiles: config.maxFiles,
level: "error",
format: fileFormat,
});
transports.push(errorFileTransport);
}
if (config.httpFile) {
const httpFileTransport = new winston_daily_rotate_file_1.default({
filename: path_1.default.join(logsDir, "http-%DATE%.log"),
datePattern: "YYYY-MM-DD",
zippedArchive: config.compress,
maxSize: config.maxSize,
maxFiles: config.maxFiles,
level: "http",
format: fileFormat,
});
transports.push(httpFileTransport);
}
}
loggerInstance = winston_1.default.createLogger({
level: config.level,
levels,
transports,
exitOnError: false,
});
return loggerInstance;
}
function getLogger() {
if (!loggerInstance) {
loggerInstance = winston_1.default.createLogger({
level: "info",
format: winston_1.default.format.combine(winston_1.default.format.timestamp(), winston_1.default.format.json()),
transports: [
new winston_1.default.transports.Console({
format: winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple()),
}),
],
});
}
return loggerInstance;
}
exports.stream = {
write: (message) => {
getLogger().http(message.trim());
},
};
//# sourceMappingURL=logger.js.map