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
JavaScript
;
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