private void ProcessAllMessages() { try { foreach (var message in messageQueue.GetConsumingEnumerable(cancellationTokenSource.Token)) { var parser = parsers.FirstOrDefault(p => p.CanParseMessage(message.Message)); renderer.Render(parser != null ? parser.Parse(message) : SystemEvent.Create(message)); } } catch (OperationCanceledException) { } }
public SystemEvent Parse(IMessage message) { Verify.NotNull(message, "message"); var match = pattern.Match(message.Message); var process = processes.GetProcessById(message.ProcessId); var level = Settings.GetLevel(match.Groups["level"].Value); return(match.Success ? new SystemEvent { Level = level, ProcessName = process.Name, ProcessId = process.Id, Timestamp = message.Timestamp, Thread = match.Groups["thread"].Value, Source = match.Groups["logger"].Value, Message = match.Groups["message"].Value, Username = match.Groups["username"].Value, RawMessage = new Lazy <String>(() => message.Message) } : SystemEvent.Create(message)); }