agentic-qe
Version:
Agentic Quality Engineering Fleet System - AI-driven quality management platform
125 lines • 4.03 kB
JavaScript
;
/**
* 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