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 1.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LogFilter = void 0; const utils_1 = require("../../utils"); class LogFilter { constructor(config) { this.config = config; } shouldProcess(entry) { // Check if level is enabled if (!this.isLevelEnabled(entry.level)) { return false; } // Check message patterns if (this.config.patterns.length > 0) { const shouldInclude = this.config.patterns.some((pattern) => pattern.test(entry.message)); if (!shouldInclude) { return false; } } // Apply sampling if (!(0, utils_1.shouldSample)(this.config.samplingRate)) { return false; } return true; } filter(entry) { // Truncate message if too long let message = entry.message; if (message.length > this.config.maxMessageLength) { message = message.substring(0, this.config.maxMessageLength) + '...[truncated]'; } // Sanitize sensitive data let context = entry.context; if (this.config.sanitize && context) { context = (0, utils_1.sanitizeData)(context, this.config.sensitivePatterns); } if (this.config.sanitize && (0, utils_1.detectSensitiveData)(message, this.config.sensitivePatterns)) { message = '[REDACTED]'; } return { ...entry, message, context, }; } isLevelEnabled(level) { return this.config.levels.includes(level); } } exports.LogFilter = LogFilter; //# sourceMappingURL=LogFilter.js.map