UNPKG

@jin7942/ray

Version:

Lightweight CI/CD deployment tool powered by Docker and Git

100 lines (99 loc) 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.logger = void 0; /** * Custom logger for lightweight CLI tools * - Console color output * - Log file writing * - Controlled by config.internal.logdir & logLevel */ const fsHelper_1 = require("./fsHelper"); const global_1 = require("../config/global"); const LEVELS = ['info', 'warn', 'error']; /** * Determines whether the current log level allows this message * * @param level - Level of the message to log */ function shouldLog(level) { const { level: currentLevel } = (0, global_1.getLogSettings)(); return LEVELS.indexOf(level) >= LEVELS.indexOf(currentLevel); } /** * Generate a console-formatted log message (with ANSI color) * * @param level - Log level * @param message - Message string */ function formatConsole(level, message) { const timestamp = new Date().toISOString(); const color = { info: '\x1b[32m', // Green warn: '\x1b[33m', // Yellow error: '\x1b[31m', // Red }[level]; return `${color}[RAY][${level.toUpperCase()}][${timestamp}] ${message}\x1b[0m`; } /** * Generate a plain string for log file output * * @param level - Log level * @param message - Message string */ function formatFile(level, message) { const timestamp = new Date().toISOString(); return `[${level.toUpperCase()}][${timestamp}] ${message}`; } /** * Get today's log file name (e.g., "2025-04-05.log") */ function getLogFileName() { return `${new Date().toISOString().slice(0, 10)}.log`; } /** * Global logger utility * - Writes to both console and local file (under /logs directory) */ exports.logger = { /** * Info-level log (green) * * @param msg - The message to log */ info: (msg) => { if (shouldLog('info')) { const output = formatConsole('info', msg); console.log(output); const { logDir } = (0, global_1.getLogSettings)(); (0, fsHelper_1.appendToFile)(logDir, getLogFileName(), formatFile('info', msg)); } }, /** * Warning-level log (yellow) * * @param msg - The message to log */ warn: (msg) => { if (shouldLog('warn')) { const output = formatConsole('warn', msg); console.warn(output); const { logDir } = (0, global_1.getLogSettings)(); (0, fsHelper_1.appendToFile)(logDir, getLogFileName(), formatFile('warn', msg)); } }, /** * Error-level log (red) * Also includes stack trace if an Error object is passed * * @param msg - Message string or Error object */ error: (msg) => { const fullMessage = msg instanceof Error ? `${msg.message}\n${msg.stack}` : msg; if (shouldLog('error')) { const output = formatConsole('error', fullMessage); console.error(output); const { logDir } = (0, global_1.getLogSettings)(); (0, fsHelper_1.appendToFile)(logDir, getLogFileName(), formatFile('error', fullMessage)); } }, };