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.

49 lines 1.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreateLogEntryUseCase = void 0; class CreateLogEntryUseCase { constructor(logRepository, filterService, contextService) { this.logRepository = logRepository; this.filterService = filterService; this.contextService = contextService; } async execute(input) { // Check if log should be processed if (!this.filterService.shouldProcess(input.level, input.message, input.context)) { return; } // Create log entry const entry = this.createLogEntry(input); // Sanitize sensitive data const sanitizedEntry = this.filterService.sanitize(entry); // Save to repository await this.logRepository.save(sanitizedEntry); } createLogEntry(input) { const context = this.contextService.getContext(); const dynamicLabels = this.contextService.getDynamicLabels(); return { id: this.generateId(), timestamp: new Date().toISOString(), level: input.level, message: input.message, context: { ...context, ...input.context, }, traceId: dynamicLabels.trace_id, spanId: dynamicLabels.span_id, requestId: dynamicLabels.request_id, labels: { level: input.level, ...dynamicLabels, }, metadata: this.contextService.getMetadata(), }; } generateId() { return `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`; } } exports.CreateLogEntryUseCase = CreateLogEntryUseCase; //# sourceMappingURL=CreateLogEntryUseCase.js.map