UNPKG

@acadix/setup

Version:

Acadix Learning Management System backend application project setup

115 lines 5.08 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.winston = exports.logger = void 0; const winston_1 = __importStar(require("winston")); exports.winston = winston_1.default; const { combine, timestamp, label, printf, metadata, colorize } = winston_1.format; const path_1 = __importDefault(require("path")); const winston_slack_webhook_transport_1 = __importDefault(require("winston-slack-webhook-transport")); // Logger output Format for file(error messages) const logFormat = (serviceName) => printf((_a) => { var { level, label, timestamp, message } = _a, meta = __rest(_a, ["level", "label", "timestamp", "message"]); return `[${level}] ${timestamp} ${label} [${serviceName}]: ${message} ${Object.keys(meta).length ? JSON.stringify(meta) : ""}`; }); const consoleFormat = (serviceName) => printf(({ level, label, timestamp, message }) => { return `[${level}] ${timestamp} ${label} [${serviceName}]: ${message}`; }); const logger = (env) => { const logTransports = []; const serviceName = env.SERVICE; const consoleLog = new winston_1.transports.Console({ format: combine(colorize({ all: false, level: true }), consoleFormat(serviceName)), }); const fileLog = new winston_1.transports.File({ level: "error", filename: path_1.default.join(__dirname, `../logs/${serviceName}-logger.log`), format: logFormat(serviceName), }); const slackLog = new winston_slack_webhook_transport_1.default({ webhookUrl: env.SLACK_WEBHOOK, channel: "server", username: "AcadixError", level: "error", formatter: (info) => { const attachments = []; if (info.metadata.stack) { const stackLines = info.metadata.stack.split("\n"); for (const line of stackLines) { // Replace double backslashes with single backslashes const formattedLine = line.replace(/\\\\/g, "\\"); attachments.push({ text: formattedLine, }); } } return { text: "No metadata to display", attachments, icon_emoji: ":cross_mark:", blocks: [ { type: "section", text: { type: "plain_text", text: `${info.label} - ${serviceName.toUpperCase()}\n\n[${info.timestamp}]: ${info.message}`, }, }, ], }; }, }); switch (env.APP_ENV) { case "production": logTransports.push(consoleLog, slackLog); break; case "test": logTransports.push(consoleLog); break; default: logTransports.push(fileLog, consoleLog); break; } return (0, winston_1.createLogger)({ transports: logTransports, format: combine(label({ label: "Acadix-Logger" }), timestamp({ format: "YY-MM-DD HH:mm:ss" }), metadata({ fillExcept: ["message", "level", "timestamp", "label"] }), logFormat(serviceName)), }); }; exports.logger = logger; //# sourceMappingURL=logger.js.map