UNPKG

cloc-graph

Version:

Track lines of code over time by language with visualization

120 lines (119 loc) 3.39 kB
"use strict"; /** * Structured logging utility */ Object.defineProperty(exports, "__esModule", { value: true }); exports.logger = exports.Logger = void 0; var LogLevel; (function (LogLevel) { LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG"; LogLevel[LogLevel["INFO"] = 1] = "INFO"; LogLevel[LogLevel["WARN"] = 2] = "WARN"; LogLevel[LogLevel["ERROR"] = 3] = "ERROR"; })(LogLevel || (LogLevel = {})); /** * Default logger configuration */ const defaultConfig = { level: LogLevel.INFO, colorize: true, timestamp: true, }; /** * Terminal colors for colorized logging */ const colors = { reset: '\x1b[0m', bright: '\x1b[1m', debug: '\x1b[36m', // Cyan info: '\x1b[32m', // Green warn: '\x1b[33m', // Yellow error: '\x1b[31m', // Red }; /** * A structured logger for the application */ class Logger { /** * Creates a new Logger instance * * @param config - Logger configuration */ constructor(config = {}) { this.config = Object.assign(Object.assign({}, defaultConfig), config); } /** * Format a log message with optional colorization and timestamp * * @param level - Log level * @param message - Log message * @param context - Additional context data * @returns Formatted log message */ formatMessage(level, message, context) { const levelNames = ['DEBUG', 'INFO ', 'WARN ', 'ERROR']; let levelName = levelNames[level]; if (this.config.colorize) { const colorKey = LogLevel[level].toLowerCase(); levelName = `${colors[colorKey]}${colors.bright}${levelName}${colors.reset}`; } let timestamp = ''; if (this.config.timestamp) { timestamp = new Date().toISOString() + ' '; } let formattedContext = ''; if (context && Object.keys(context).length > 0) { formattedContext = ' ' + JSON.stringify(context); } return `${timestamp}${levelName}: ${message}${formattedContext}`; } /** * Log a debug message * * @param message - Debug message * @param context - Optional context data */ debug(message, context) { if (this.config.level <= LogLevel.DEBUG) { console.debug(this.formatMessage(LogLevel.DEBUG, message, context)); } } /** * Log an info message * * @param message - Info message * @param context - Optional context data */ info(message, context) { if (this.config.level <= LogLevel.INFO) { console.info(this.formatMessage(LogLevel.INFO, message, context)); } } /** * Log a warning message * * @param message - Warning message * @param context - Optional context data */ warn(message, context) { if (this.config.level <= LogLevel.WARN) { console.warn(this.formatMessage(LogLevel.WARN, message, context)); } } /** * Log an error message * * @param message - Error message * @param context - Optional context data */ error(message, context) { if (this.config.level <= LogLevel.ERROR) { console.error(this.formatMessage(LogLevel.ERROR, message, context)); } } } exports.Logger = Logger; /** * Default application logger instance */ exports.logger = new Logger();