- Standardized error handling across tool implementations - Improved return type consistency for tool execution results - Simplified configuration parsing and type definitions - Enhanced type safety for various configuration schemas - Cleaned up and normalized tool response structures - Updated SSE and event subscription tool implementations
113 lines
2.3 KiB
TypeScript
113 lines
2.3 KiB
TypeScript
/**
|
|
* Logging Module
|
|
*
|
|
* This module provides logging functionality with rotation support.
|
|
* It uses winston for logging and winston-daily-rotate-file for rotation.
|
|
*
|
|
* @module logger
|
|
*/
|
|
|
|
import winston from "winston";
|
|
import DailyRotateFile from "winston-daily-rotate-file";
|
|
import { APP_CONFIG } from "../config/app.config.js";
|
|
|
|
/**
|
|
* Log levels configuration
|
|
* Defines the severity levels for logging
|
|
*/
|
|
const levels = {
|
|
error: 0,
|
|
warn: 1,
|
|
info: 2,
|
|
http: 3,
|
|
debug: 4,
|
|
};
|
|
|
|
/**
|
|
* Log level colors configuration
|
|
* Defines colors for different log levels
|
|
*/
|
|
const colors = {
|
|
error: "red",
|
|
warn: "yellow",
|
|
info: "green",
|
|
http: "magenta",
|
|
debug: "white",
|
|
};
|
|
|
|
/**
|
|
* Add colors to winston
|
|
*/
|
|
winston.addColors(colors);
|
|
|
|
/**
|
|
* Log format configuration
|
|
* Defines how log messages are formatted
|
|
*/
|
|
const format = winston.format.combine(
|
|
winston.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss:ms" }),
|
|
winston.format.colorize({ all: true }),
|
|
winston.format.printf(
|
|
(info) => `${info.timestamp} ${info.level}: ${info.message}`,
|
|
),
|
|
);
|
|
|
|
/**
|
|
* Transport for daily rotating file
|
|
* Configures how logs are rotated and stored
|
|
*/
|
|
const dailyRotateFileTransport = new DailyRotateFile({
|
|
filename: "logs/%DATE%.log",
|
|
datePattern: "YYYY-MM-DD",
|
|
zippedArchive: true,
|
|
maxSize: "20m",
|
|
maxFiles: "14d",
|
|
format: winston.format.combine(
|
|
winston.format.uncolorize(),
|
|
winston.format.timestamp(),
|
|
winston.format.json(),
|
|
),
|
|
});
|
|
|
|
/**
|
|
* Transport for error logs
|
|
* Stores error logs in a separate file
|
|
*/
|
|
const errorFileTransport = new DailyRotateFile({
|
|
filename: "logs/error-%DATE%.log",
|
|
datePattern: "YYYY-MM-DD",
|
|
level: "error",
|
|
zippedArchive: true,
|
|
maxSize: "20m",
|
|
maxFiles: "14d",
|
|
format: winston.format.combine(
|
|
winston.format.uncolorize(),
|
|
winston.format.timestamp(),
|
|
winston.format.json(),
|
|
),
|
|
});
|
|
|
|
/**
|
|
* Create the logger instance
|
|
*/
|
|
const logger = winston.createLogger({
|
|
level: APP_CONFIG.NODE_ENV === "development" ? "debug" : "info",
|
|
levels,
|
|
format,
|
|
transports: [
|
|
new winston.transports.Console({
|
|
format: winston.format.combine(
|
|
winston.format.colorize(),
|
|
winston.format.simple(),
|
|
),
|
|
}),
|
|
dailyRotateFileTransport,
|
|
errorFileTransport,
|
|
],
|
|
});
|
|
|
|
/**
|
|
* Export the logger instance
|
|
*/
|
|
export { logger };
|