UNPKG

agentic-qe

Version:

Agentic Quality Engineering Fleet System - AI-driven quality management platform

125 lines 4.03 kB
"use strict"; /** * Logger - Centralized logging system for the AQE Fleet * * Provides structured logging with different levels and output formats * for comprehensive fleet monitoring and debugging. */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Logger = exports.LogLevel = void 0; const winston_1 = __importDefault(require("winston")); const path_1 = __importDefault(require("path")); var LogLevel; (function (LogLevel) { LogLevel["ERROR"] = "error"; LogLevel["WARN"] = "warn"; LogLevel["INFO"] = "info"; LogLevel["DEBUG"] = "debug"; })(LogLevel || (exports.LogLevel = LogLevel = {})); class Logger { constructor() { this.logger = winston_1.default.createLogger({ level: process.env.LOG_LEVEL || 'info', format: winston_1.default.format.combine(winston_1.default.format.timestamp(), winston_1.default.format.errors({ stack: true }), winston_1.default.format.json()), defaultMeta: { service: 'agentic-qe-fleet' }, transports: [ // Write all logs to console new winston_1.default.transports.Console({ format: winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple(), winston_1.default.format.printf(({ timestamp, level, message, service, ...meta }) => { const metaStr = Object.keys(meta).length ? ` ${JSON.stringify(meta)}` : ''; return `${timestamp} [${service}] ${level}: ${message}${metaStr}`; })) }), // Write error logs to error.log new winston_1.default.transports.File({ filename: path_1.default.join(process.cwd(), 'logs', 'error.log'), level: 'error', maxsize: 5242880, // 5MB maxFiles: 5 }), // Write all logs to combined.log new winston_1.default.transports.File({ filename: path_1.default.join(process.cwd(), 'logs', 'combined.log'), maxsize: 5242880, // 5MB maxFiles: 5 }) ] }); // Create logs directory if it doesn't exist this.ensureLogsDirectory(); } /** * Get singleton instance */ static getInstance() { if (!Logger.instance) { Logger.instance = new Logger(); } return Logger.instance; } /** * Log error message */ error(message, meta) { this.logger.error(message, meta); } /** * Log warning message */ warn(message, meta) { this.logger.warn(message, meta); } /** * Log info message */ info(message, meta) { this.logger.info(message, meta); } /** * Log debug message */ debug(message, meta) { this.logger.debug(message, meta); } /** * Log with specific level */ log(level, message, meta) { this.logger.log(level, message, meta); } /** * Create child logger with additional context */ child(meta) { const childLogger = new Logger(); childLogger.logger = this.logger.child(meta); return childLogger; } /** * Set log level */ setLevel(level) { this.logger.level = level; } /** * Get current log level */ getLevel() { return this.logger.level; } /** * Ensure logs directory exists */ ensureLogsDirectory() { const fs = require('fs'); const logsDir = path_1.default.join(process.cwd(), 'logs'); if (!fs.existsSync(logsDir)) { fs.mkdirSync(logsDir, { recursive: true }); } } } exports.Logger = Logger; //# sourceMappingURL=Logger.js.map