public static EventData ToEventData(this EventWrittenEventArgs eventSourceEvent)
        {
            EventData eventData = new EventData
            {
                ProviderName = eventSourceEvent.EventSource.GetType().FullName,
                Timestamp = DateTime.UtcNow,
                EventId = eventSourceEvent.EventId,
                Level = EventLevelNames[(int) eventSourceEvent.Level],
                Keywords = HexadecimalNumberPrefix + ((ulong) eventSourceEvent.Keywords).ToString("X16", CultureInfo.InvariantCulture),
                EventName = eventSourceEvent.EventName,
            };

            try
            {
                if (eventSourceEvent.Message != null)
                {
                    // If the event has a badly formatted manifest, the FormattedMessage property getter might throw
                    eventData.Message = string.Format(CultureInfo.InvariantCulture, eventSourceEvent.Message, eventSourceEvent.Payload.ToArray());
                }
            }
            catch
            {
            }

            eventData.Payload = eventSourceEvent.GetPayloadData();

            return eventData;
        }
        private DynamicTableEntity ToTableEntity(EventData eventData, string partitionKey, string rowKeyPrefix)
        {
            DynamicTableEntity result = new DynamicTableEntity();
            result.PartitionKey = partitionKey;
            result.RowKey = rowKeyPrefix + KeySegmentSeparator + this.GetEntitySequenceId().ToString() + KeySegmentSeparator + this.instanceId;

            result.Properties.Add(nameof(eventData.Timestamp), new EntityProperty(eventData.Timestamp));
            result.Properties.Add(nameof(eventData.ProviderName), new EntityProperty(eventData.ProviderName));
            result.Properties.Add(nameof(eventData.EventId), new EntityProperty(eventData.EventId));
            result.Properties.Add(nameof(eventData.Message), new EntityProperty(eventData.Message));
            result.Properties.Add(nameof(eventData.Level), new EntityProperty(eventData.Level));
            result.Properties.Add(nameof(eventData.Keywords), new EntityProperty(eventData.Keywords));
            result.Properties.Add(nameof(eventData.EventName), new EntityProperty(eventData.EventName));

            foreach (KeyValuePair<string, object> item in eventData.Payload)
            {
                result.Properties.Add(item.Key, EntityProperty.CreateEntityPropertyFromObject(item.Value));
            }

            return result;
        }