UNPKG

status-checker

Version:

A lean, dependency-free URL status checker library

136 lines 3.8 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Logger = void 0; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); /** * Logger class for handling log messages */ class Logger { /** * Create a new Logger instance * @param config Configuration object or log level string */ constructor(config) { this.logLevels = { error: 0, warn: 1, info: 2, debug: 3 }; if (typeof config === 'string') { this.logLevel = config; this.logFile = undefined; } else if (config) { this.logLevel = config.logLevel || 'info'; this.logFile = config.logFile; } else { this.logLevel = 'info'; this.logFile = undefined; } } /** * Log a message at the specified level * @param message Message to log * @param level Log level */ log(message, level = 'info') { if (this.shouldLog(level)) { const timestamp = new Date().toISOString(); const formattedMessage = `[${timestamp}] [${level.toUpperCase()}] ${message}`; // Console output this.consoleLog(formattedMessage, level); // File output if configured if (this.logFile) { this.fileLog(formattedMessage); } } } /** * Log an error message * @param message Error message */ error(message) { this.log(message, 'error'); } /** * Log a warning message * @param message Warning message */ warn(message) { this.log(message, 'warn'); } /** * Log an info message * @param message Info message */ info(message) { this.log(message, 'info'); } /** * Log a debug message * @param message Debug message */ debug(message) { this.log(message, 'debug'); } /** * Check if a message at the given level should be logged * @param level Log level to check * @returns Whether the message should be logged */ shouldLog(level) { const configLevel = this.logLevels[this.logLevel] || 2; const messageLevel = this.logLevels[level] || 2; return messageLevel <= configLevel; } /** * Log a message to the console * @param message Formatted message * @param level Log level */ consoleLog(message, level) { switch (level) { case 'error': console.error(message); break; case 'warn': console.warn(message); break; case 'debug': console.debug(message); break; case 'info': default: console.info(message); break; } } /** * Log a message to a file * @param message Formatted message */ fileLog(message) { if (!this.logFile) return; try { // Ensure directory exists const dir = path_1.default.dirname(this.logFile); if (!fs_1.default.existsSync(dir)) { fs_1.default.mkdirSync(dir, { recursive: true }); } // Append to log file fs_1.default.appendFileSync(this.logFile, message + '\n'); } catch (error) { console.error(`Failed to write to log file: ${error}`); } } } exports.Logger = Logger; //# sourceMappingURL=logger.js.map