protected override void OnEventWritten(EventWrittenEventArgs eventData) { var message = EventWrittenMessage.Create(eventData); var successful = _messages.Writer.TryWrite(message); Debug.Assert(successful, "Channel should be unbounded!"); }
private void HandleLoggerMessage(EventWrittenMessage inputMessage) { var payloadDict = Enumerable.Range(0, inputMessage.Payload.Count).ToDictionary( i => inputMessage.PayloadNames[i], i => inputMessage.Payload[i]); var args = (JArray)payloadDict["Arguments"]; var outputMessage = new EventWrittenMessage() { EventName = (string)payloadDict["EventId"], Level = MapLogLevel((long)payloadDict["Level"]), ProviderName = (string)payloadDict["LoggerName"], ActivityId = inputMessage.ActivityId, Channel = inputMessage.Channel, Version = inputMessage.Version, EventId = inputMessage.EventId, Keywords = inputMessage.Keywords, Opcode = inputMessage.Opcode, RelatedActivityId = inputMessage.RelatedActivityId, Tags = inputMessage.Tags, Task = inputMessage.Task, }; string messageFormat = null; var messageArgs = new Dictionary <string, string>(); foreach (var arg in args) { var obj = (JObject)arg; var key = obj.Value <string>("Key"); var value = obj.Value <string>("Value"); if (key.Equals("{OriginalFormat}")) { messageFormat = value; } else { outputMessage.PayloadNames.Add(key); outputMessage.Payload.Add(value); messageArgs.Add(key, value); } } if (messageFormat != null) { outputMessage.Message = LogValuesFormatter.Format(messageFormat, messageArgs); } _ = Task.Run(() => OnEventWritten?.Invoke(outputMessage)); }
private void HandleEventCounter(EventWrittenMessage eventWrittenMessage) { var payloadIndex = eventWrittenMessage.PayloadNames.IndexOf("Payload"); if (payloadIndex == -1) { // No-op, something is wrong. return; } var payload = (JObject)eventWrittenMessage.Payload[payloadIndex]; var eventCounterState = new EventCounterState( eventWrittenMessage.ProviderName, payload.Value <string>("Name"), payload.Value <double>("Mean"), payload.Value <double>("StandardDeviation"), payload.Value <double>("Count"), payload.Value <double>("Min"), payload.Value <double>("Max"), TimeSpan.FromSeconds(payload.Value <double>("IntervalSec"))); _ = Task.Run(() => OnEventCounterUpdated?.Invoke(eventCounterState)); }