/// <summary>
        ///     Convert the given <paramref name="logEvent"/> to a series of <see cref="ITelemetry"/> instances.
        /// </summary>
        /// <param name="logEvent">The event containing all relevant information for an <see cref="ITelemetry"/> instance.</param>
        /// <param name="formatProvider">The instance to control formatting.</param>
        public override IEnumerable <ITelemetry> Convert(LogEvent logEvent, IFormatProvider formatProvider)
        {
            if (logEvent.Exception != null)
            {
                return(_exceptionTelemetryConverter.Convert(logEvent, formatProvider));
            }

            if (logEvent.Properties.ContainsKey(ContextProperties.RequestTracking.RequestLogEntry))
            {
                return(_requestTelemetryConverter.Convert(logEvent, formatProvider));
            }

            if (logEvent.Properties.ContainsKey(ContextProperties.DependencyTracking.DependencyLogEntry))
            {
                return(_dependencyTelemetryConverter.Convert(logEvent, formatProvider));
            }

            if (logEvent.Properties.ContainsKey(ContextProperties.EventTracking.EventLogEntry))
            {
                return(_eventTelemetryConverter.Convert(logEvent, formatProvider));
            }

            if (logEvent.Properties.ContainsKey(ContextProperties.MetricTracking.MetricLogEntry))
            {
                return(_metricTelemetryConverter.Convert(logEvent, formatProvider));
            }

            return(_traceTelemetryConverter.Convert(logEvent, formatProvider));
        }
        /// <summary>
        ///     Convert the given <paramref name="logEvent"/> to a series of <see cref="ITelemetry"/> instances.
        /// </summary>
        /// <param name="logEvent">The event containing all relevant information for an <see cref="ITelemetry"/> instance.</param>
        /// <param name="formatProvider">The instance to control formatting.</param>
        public override IEnumerable <ITelemetry> Convert(LogEvent logEvent, IFormatProvider formatProvider)
        {
            if (logEvent.Exception != null)
            {
                return(_exceptionTelemetryConverter.Convert(logEvent, formatProvider));
            }

            if (logEvent.MessageTemplate.Text.StartsWith(MessagePrefixes.RequestViaHttp))
            {
                return(_requestTelemetryConverter.Convert(logEvent, formatProvider));
            }

            if (logEvent.MessageTemplate.Text.StartsWith(MessagePrefixes.Dependency))
            {
                return(_customDependencyTelemetryConverter.Convert(logEvent, formatProvider));
            }

            if (logEvent.MessageTemplate.Text.StartsWith(MessagePrefixes.DependencyViaHttp))
            {
                return(_httpDependencyTelemetryConverter.Convert(logEvent, formatProvider));
            }

            if (logEvent.MessageTemplate.Text.StartsWith(MessagePrefixes.DependencyViaSql))
            {
                return(_sqlDependencyTelemetryConverter.Convert(logEvent, formatProvider));
            }

            if (logEvent.MessageTemplate.Text.StartsWith(MessagePrefixes.Event))
            {
                return(_eventTelemetryConverter.Convert(logEvent, formatProvider));
            }

            if (logEvent.MessageTemplate.Text.StartsWith(MessagePrefixes.Metric))
            {
                return(_metricTelemetryConverter.Convert(logEvent, formatProvider));
            }

            return(_traceTelemetryConverter.Convert(logEvent, formatProvider));
        }