public void Log()

in src/Microsoft.Azure.WebJobs.Logging.ApplicationInsights/ApplicationInsightsLogger.cs [63:107]


        public void Log<TState>(LogLevel logLevel, EventId eventId, TState state,
            Exception exception, Func<TState, Exception, string> formatter)
        {
            IEnumerable<KeyValuePair<string, object>> stateValues = state as IEnumerable<KeyValuePair<string, object>>;

            // If we don't have anything here, there's nothing to log.
            if (stateValues == null && formatter == null && exception == null)
            {
                return;
            }

            // Initialize stateValues so the rest of the methods don't have to worry about null values.
            stateValues = stateValues ?? Array.Empty<KeyValuePair<string, object>>();

            if (_isUserFunction && eventId.Id == LogConstants.MetricEventId)
            {
                // Log a metric from user logs only
                LogMetric(stateValues, logLevel, eventId);
            }
            else if (_categoryName == LogCategories.Results)
            {
                // Log a function result
                LogFunctionResult(stateValues, logLevel, exception, eventId);
            }
            else if (_categoryName == LogCategories.Aggregator)
            {
                // Log an aggregate record
                LogFunctionResultAggregate(stateValues, logLevel, eventId);
            }
            else
            {
                string formattedMessage = formatter?.Invoke(state, exception);

                if (exception != null)
                {
                    // Log an exception
                    LogException(logLevel, stateValues, exception, formattedMessage, eventId);
                }
                else
                {
                    // Otherwise, log a trace
                    LogTrace(logLevel, stateValues, formattedMessage, eventId);
                }
            }
        }