UNPKG

nestjs-universal-logger-v2

Version:

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

41 lines (40 loc) 2.24 kB
import { LoggerService as NestLoggerService } from '@nestjs/common'; import { Model } from 'mongoose'; import { LogEntry, LogQuery } from './interfaces/config.interface'; import { UniversalLoggerConfig } from './universal-logger.config'; export declare class UniversalLoggerService implements NestLoggerService { private readonly logModel; private readonly winstonLogger; private readonly config; private readonly serviceName; private readonly environment; private readonly version; constructor(logModel: Model<LogEntry>, config: UniversalLoggerConfig); private createTransports; private createLogEntry; private getSeverityLevel; log(message: string, context?: string, metadata?: Record<string, any>): void; error(message: string, trace?: string, context?: string, metadata?: Record<string, any>): void; warn(message: string, context?: string, metadata?: Record<string, any>): void; debug(message: string, context?: string, metadata?: Record<string, any>): void; verbose(message: string, context?: string, metadata?: Record<string, any>): void; logApiCall(req: any, res: any, duration: number, statusCode: number): void; logPerformance(operation: string, duration: number, metadata?: Record<string, any>): void; logDatabaseQuery(query: string, duration: number, table?: string, operation?: string): void; logExternalCall(url: string, method: string, duration: number, statusCode: number, response?: any): void; logSecurity(event: string, metadata?: Record<string, any>): void; logAuthEvent(event: string, userId?: string, success?: boolean, metadata?: Record<string, any>): void; logBusinessLogic(operation: string, data: any, context?: string): void; logUserAction(action: string, userId: string, metadata?: Record<string, any>): void; logFeatureUsage(feature: string, userId?: string, metadata?: Record<string, any>): void; logSystemMetrics(): void; getLogs(query: LogQuery): Promise<LogEntry[]>; getLogStats(timeRange: { start: Date; end: Date; }): Promise<any>; cleanupOldLogs(daysToKeep?: number): Promise<number>; private sanitizeHeaders; private isBodyLoggable; private getResponseBody; }