logs-interceptor
Version:
High-performance, production-ready log interceptor for Node.js applications with Loki integration. Built with Clean Architecture principles. Supports Node.js, Browser, and Node-RED.
103 lines • 3.56 kB
TypeScript
/**
* Application Configuration
* DTOs for configuration
*/
import { LogLevel } from '../../domain/value-objects/LogLevel';
export interface TransportConfig {
readonly url: string;
readonly tenantId: string;
readonly authToken?: string;
readonly timeout?: number;
readonly maxRetries?: number;
readonly retryDelay?: number;
readonly compression?: boolean;
}
export interface BufferConfig {
readonly maxSize?: number;
readonly flushInterval?: number;
readonly maxAge?: number;
readonly autoFlush?: boolean;
readonly maxMemoryMB?: number;
}
export interface FilterConfig {
readonly levels?: LogLevel[];
readonly patterns?: RegExp[];
readonly samplingRate?: number;
readonly maxMessageLength?: number;
readonly sanitize?: boolean;
readonly sensitivePatterns?: RegExp[];
}
export interface CircuitBreakerConfig {
readonly enabled?: boolean;
readonly failureThreshold?: number;
readonly resetTimeout?: number;
readonly halfOpenRequests?: number;
}
export interface IntegrationsConfig {
readonly winston?: boolean | WinstonIntegrationConfig;
readonly pino?: boolean | PinoIntegrationConfig;
readonly morgan?: boolean | MorganIntegrationConfig;
readonly nodeRed?: boolean | NodeRedIntegrationConfig;
}
export interface WinstonIntegrationConfig {
readonly enabled: boolean;
readonly levels?: Record<string, LogLevel>;
}
export interface PinoIntegrationConfig {
readonly enabled: boolean;
readonly messageKey?: string;
readonly levelKey?: string;
}
export interface MorganIntegrationConfig {
readonly enabled: boolean;
readonly format?: string;
}
export interface NodeRedIntegrationConfig {
readonly enabled: boolean;
readonly nodeName?: string;
readonly category?: string;
}
export interface PerformanceConfig {
readonly useWorkers?: boolean;
readonly maxConcurrentFlushes?: number;
readonly compressionLevel?: number;
}
export interface LogsInterceptorConfig {
readonly transport: TransportConfig;
readonly appName: string;
readonly version?: string;
readonly environment?: string;
readonly labels?: Record<string, string>;
readonly dynamicLabels?: Record<string, () => string | number>;
readonly buffer?: BufferConfig;
readonly filter?: FilterConfig;
readonly circuitBreaker?: CircuitBreakerConfig;
readonly integrations?: IntegrationsConfig;
readonly performance?: PerformanceConfig;
readonly enableMetrics?: boolean;
readonly enableHealthCheck?: boolean;
readonly interceptConsole?: boolean;
readonly preserveOriginalConsole?: boolean;
readonly debug?: boolean;
readonly silentErrors?: boolean;
}
export interface ResolvedLogsInterceptorConfig {
readonly transport: Required<TransportConfig>;
readonly appName: string;
readonly version: string;
readonly environment: string;
readonly labels: Record<string, string>;
readonly dynamicLabels: Record<string, () => string | number>;
readonly buffer: Required<BufferConfig>;
readonly filter: Required<FilterConfig>;
readonly circuitBreaker: Required<CircuitBreakerConfig>;
readonly integrations: IntegrationsConfig;
readonly performance: Required<PerformanceConfig>;
readonly enableMetrics: boolean;
readonly enableHealthCheck: boolean;
readonly interceptConsole: boolean;
readonly preserveOriginalConsole: boolean;
readonly debug: boolean;
readonly silentErrors: boolean;
}
//# sourceMappingURL=LogsInterceptorConfig.d.ts.map