protected override void SendBuffer(LoggingEvent[] events) { var newEvents = events .ToList() .Where(ev => Evaluator.IsTriggeringEvent(ev)) .ToList(); // Se è passato l'intervallo prende il primo if (FlushInterval.TotalMilliseconds >= 0 && DateTime.Now - _lastFlush > FlushInterval) { newEvents = new List<LoggingEvent> {events.First()}; // Se c'è specificato un filtro allora filtra if (!string.IsNullOrEmpty(IgnoreIfWordsInSubjectOrBody)) { var items = IgnoreIfWordsInSubjectOrBody.Split(',').Select(el => el.ToLower()).ToList(); // Se una parola è contenuta nell'oggetto o nel testo del messaggio viene scartato il messaggio var filteredEvents = new List<LoggingEvent>(); foreach (var loggingEvent in newEvents) { var subject = RenderSubject(loggingEvent); var message = loggingEvent.RenderedMessage; if (!items.Any(el => subject.ToLower().Contains(el) && !message.ToLower().Contains(el))) filteredEvents.Add(loggingEvent); } newEvents = filteredEvents; } if (newEvents.Count > 0) { var subjects = newEvents.Select(RenderSubject); Subject = string.Join(", ", subjects); base.SendBuffer(newEvents.ToArray()); _lastFlush = DateTime.Now; } } }