UNPKG

nestjs-universal-logger-v2

Version:

Universal logging package for NestJS - Automatic system-wide logging with per-service MongoDB collections and TTL-based cleanup

186 lines (185 loc) 4.77 kB
export interface UniversalLoggerConfig { mongodb?: { uri?: string; host?: string; port?: number; database?: string; username?: string; password?: string; options?: { useNewUrlParser?: boolean; useUnifiedTopology?: boolean; maxPoolSize?: number; serverSelectionTimeoutMS?: number; socketTimeoutMS?: number; }; }; logging?: { level?: 'error' | 'warn' | 'info' | 'debug' | 'verbose'; serviceName?: string; environment?: string; version?: string; enableConsole?: boolean; enableFile?: boolean; logDirectory?: string; maxFileSize?: number; maxFiles?: number; }; api?: { enabled?: boolean; logRequests?: boolean; logResponses?: boolean; logHeaders?: boolean; logBody?: boolean; logQuery?: boolean; sensitiveHeaders?: string[]; excludePaths?: string[]; includePaths?: string[]; maxBodySize?: number; slowRequestThreshold?: number; }; performance?: { enabled?: boolean; trackDatabaseQueries?: boolean; trackExternalCalls?: boolean; trackMemoryUsage?: boolean; trackCPUUsage?: boolean; }; security?: { enabled?: boolean; trackAuthEvents?: boolean; trackFailedLogins?: boolean; trackSuspiciousActivity?: boolean; ipWhitelist?: string[]; ipBlacklist?: string[]; }; business?: { enabled?: boolean; trackUserActions?: boolean; trackFeatureUsage?: boolean; trackConversions?: boolean; customEvents?: string[]; }; dashboard?: { enabled?: boolean; port?: number; host?: string; auth?: { enabled?: boolean; username?: string; password?: string; }; }; retention?: { enabled?: boolean; daysToKeep?: number; maxSizeGB?: number; archiveOldLogs?: boolean; archivePath?: string; }; ttl?: { enabled?: boolean; expireAfterSeconds?: number; indexField?: 'timestamp' | 'created_at' | 'updated_at'; }; export?: { enabled?: boolean; formats?: ('json' | 'csv' | 'excel')[]; maxExportSize?: number; exportPath?: string; }; alerts?: { enabled?: boolean; errorRateThreshold?: number; responseTimeThreshold?: number; memoryUsageThreshold?: number; webhookUrl?: string; email?: { enabled?: boolean; smtp?: { host?: string; port?: number; secure?: boolean; auth?: { user?: string; pass?: string; }; }; recipients?: string[]; }; }; } export interface LogEntry { id: string; timestamp: Date; level: 'error' | 'warn' | 'info' | 'debug' | 'verbose'; service: string; module?: string; method?: string; message: string; trace?: string; metadata?: Record<string, any>; userId?: string; sessionId?: string; requestId?: string; ip?: string; userAgent?: string; duration?: number; statusCode?: number; errorCode?: string; tags?: string[]; severity?: 'low' | 'medium' | 'high' | 'critical'; environment?: string; version?: string; apiCall?: { method?: string; path?: string; query?: Record<string, any>; body?: any; headers?: Record<string, any>; response?: { statusCode?: number; body?: any; headers?: Record<string, any>; }; }; performance?: { memoryUsage?: { heapUsed?: number; heapTotal?: number; external?: number; rss?: number; }; cpuUsage?: { user?: number; system?: number; }; databaseQueries?: Array<{ query?: string; duration?: number; table?: string; operation?: string; }>; externalCalls?: Array<{ url?: string; method?: string; duration?: number; statusCode?: number; }>; }; } export interface LogQuery { service?: string; level?: string; startDate?: Date; endDate?: Date; userId?: string; requestId?: string; tags?: string[]; severity?: string; limit?: number; skip?: number; path?: string; method?: string; statusCode?: number; }