UNPKG

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.

55 lines 2.38 kB
/// <reference types="node" /> /** * Presentation: Logger * Public API for the logs interceptor */ import { EventEmitter } from 'events'; import { LogLevel } from '../domain/entities/LogEntry'; import { CreateLogEntryUseCase } from '../application/use-cases/CreateLogEntryUseCase'; import { ILogRepository } from '../domain/repositories/ILogRepository'; import { IContextService } from '../domain/services/IContextService'; export interface LoggerMetrics { readonly logsProcessed: number; readonly logsDropped: number; readonly logsSanitized: number; readonly flushCount: number; readonly errorCount: number; readonly bufferSize: number; readonly avgFlushTime: number; readonly lastFlushTime: number; readonly memoryUsage: number; readonly cpuUsage: number; readonly circuitBreakerTrips: number; } export interface HealthStatus { readonly healthy: boolean; readonly lastSuccessfulFlush?: number; readonly consecutiveErrors: number; readonly bufferUtilization: number; readonly uptime: number; readonly memoryUsageMB: number; readonly circuitBreakerState: 'closed' | 'open' | 'half-open'; } export declare class Logger extends EventEmitter { private readonly createLogEntryUseCase; private readonly logRepository; private readonly contextService; private metrics; private startTime; private isDestroyed; constructor(createLogEntryUseCase: CreateLogEntryUseCase, logRepository: ILogRepository, contextService: IContextService); log(level: LogLevel, message: string, context?: Record<string, unknown>): Promise<void>; debug(message: string, context?: Record<string, unknown>): void; info(message: string, context?: Record<string, unknown>): void; warn(message: string, context?: Record<string, unknown>): void; error(message: string, context?: Record<string, unknown>): void; fatal(message: string, context?: Record<string, unknown>): void; trackEvent(eventName: string, properties?: Record<string, unknown>): void; flush(): Promise<void>; runWithContext<T>(context: Record<string, unknown>, fn: () => T): T; runWithContextAsync<T>(context: Record<string, unknown>, fn: () => Promise<T>): Promise<T>; getMetrics(): LoggerMetrics; getHealth(): Promise<HealthStatus>; destroy(): Promise<void>; } //# sourceMappingURL=Logger.d.ts.map