コード例 #1
0
        protected override void OnEventWritten(EventWrittenEventArgs eventData)
        {
            var message    = EventWrittenMessage.Create(eventData);
            var successful = _messages.Writer.TryWrite(message);

            Debug.Assert(successful, "Channel should be unbounded!");
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }