public async Task Execute(ILoggingBuilder builder, LoggerItemConfiguration configuration)
        {
            //反序列化特定配置
            var innerConfiguration = JsonSerializerHelper.Deserialize <ApplicationInsightsConfiguration>(JsonSerializerHelper.Serializer(configuration.ConfigurationObj));

            //绑定提供方
            builder.AddApplicationInsights(innerConfiguration.Key, (opt) =>
            {
                opt.IncludeScopes = innerConfiguration.IncludeScopes;
                opt.TrackExceptionsAsExceptionTelemetry = innerConfiguration.TrackExceptionsAsExceptionTelemetry;
            });
            //配置级别过滤
            foreach (var filterItem in configuration.LogLevels)
            {
                builder.AddFilter <ApplicationInsightsLoggerProvider>(filterItem.Key, filterItem.Value);
            }

            //配置其他未指定目录的最低级别
            builder.AddFilter <ApplicationInsightsLoggerProvider>((level) =>
            {
                if (level < configuration.DefaultMinLevel)
                {
                    return(false);
                }

                return(true);
            });

            await Task.FromResult(0);
        }
Пример #2
0
 public static void ConfigureLogging(HostBuilderContext hostBuilderContext, ILoggingBuilder loggingBuilder)
 {
     if (hostBuilderContext.Configuration.UseApplicationInsights())
     {
         loggingBuilder.AddApplicationInsights(hostBuilderContext.Configuration.GetApplicationInsightsInstrumentationKey());
     }
 }
Пример #3
0
 public static ILoggingBuilder AddLogging(this ILoggingBuilder loggingBuilder)
 {
     loggingBuilder.AddFilter <ApplicationInsightsLoggerProvider>("", LogLevel.Trace);
     loggingBuilder.AddAzureWebAppDiagnostics();
     loggingBuilder.AddApplicationInsights();
     return(loggingBuilder);
 }
        internal static void ConfigureApplicationInsights(HostBuilderContext context, ILoggingBuilder builder)
        {
            string appInsightsKey = context.Configuration[EnvironmentSettingNames.AppInsightsInstrumentationKey];

            // Initializing AppInsights services during placeholder mode as well to avoid the cost of JITting these objects during specialization
            if (!string.IsNullOrEmpty(appInsightsKey) || SystemEnvironment.Instance.IsPlaceholderModeEnabled())
            {
                builder.AddApplicationInsights(o => o.InstrumentationKey = appInsightsKey);
                builder.Services.ConfigureOptions <ApplicationInsightsLoggerOptionsSetup>();

                builder.Services.AddSingleton <ISdkVersionProvider, FunctionsSdkVersionProvider>();

                if (SystemEnvironment.Instance.IsPlaceholderModeEnabled())
                {
                    for (int i = 0; i < builder.Services.Count; i++)
                    {
                        // This is to avoid possible race condition during specialization when disposing old AI listeners created during placeholder mode.
                        if (builder.Services[i].ServiceType == typeof(ITelemetryModule) && builder.Services[i].ImplementationFactory?.Method.ReturnType == typeof(DependencyTrackingTelemetryModule))
                        {
                            builder.Services.RemoveAt(i);
                            break;
                        }
                    }

                    // Disable auto-http tracking when in placeholder mode.
                    builder.Services.Configure <ApplicationInsightsLoggerOptions>(o =>
                    {
                        o.HttpAutoCollectionOptions.EnableHttpTriggerExtendedInfoCollection = false;
                    });
                }
            }
        }
Пример #5
0
 private static void LoggingConfig(HostBuilderContext ctx, ILoggingBuilder builder)
 {
     builder.AddNLog();
     builder.AddConsole();
     builder.AddApplicationInsights(ctx.Configuration.GetSection("ApplicationInsight").Get <AppInsightsSection>().InstrumentationKey);
     builder.AddConfiguration(ctx.Configuration.GetSection("Logging"));
     builder.Services.AddSingleton(srvProvider => srvProvider.GetRequiredService <ILoggerFactory>().CreateLogger("AzureServiceBusDemo"));
 }
 /// <summary>
 /// Adds an ApplicationInsights logger named 'ApplicationInsights' to the factory.
 /// </summary>
 /// <param name="builder">The <see cref="ILoggingBuilder"/> to use.</param>
 /// <param name="configureApplicationInsightsLoggerOptions">Action to configure ApplicationInsights logger.</param>
 public static ILoggingBuilder AddApplicationInsights(
     this ILoggingBuilder builder,
     Action <ApplicationInsightsLoggerOptions> configureApplicationInsightsLoggerOptions)
 {
     return(builder.AddApplicationInsights(
                (telemetryConfiguration) => { },
                configureApplicationInsightsLoggerOptions));
 }
 /// <summary>
 /// Adds an ApplicationInsights logger named 'ApplicationInsights' to the factory.
 /// </summary>
 /// <param name="builder">The <see cref="ILoggingBuilder"/> to use.</param>
 /// <param name="instrumentationKey">Application insights instrumentation key.</param>
 /// <returns>Logging builder with Application Insights added to it.</returns>
 public static ILoggingBuilder AddApplicationInsights(
     this ILoggingBuilder builder,
     string instrumentationKey)
 {
     return(builder.AddApplicationInsights(
                (telemetryConfiguration) => telemetryConfiguration.InstrumentationKey = instrumentationKey,
                (applicationInsightsOptions) => { }));
 }
 /// <summary>
 /// Adds an ApplicationInsights logger named 'ApplicationInsights' to the factory.
 /// </summary>
 /// <param name="builder">The <see cref="ILoggingBuilder"/> to use.</param>
 /// <param name="instrumentationKey">Application insights instrumentation key.</param>
 /// <param name="configureApplicationInsightsLoggerOptions">Action to configure ApplicationInsights logger.</param>
 /// <returns>Logging builder with Application Insights added to it.</returns>
 public static ILoggingBuilder AddApplicationInsights(
     this ILoggingBuilder builder,
     string instrumentationKey,
     Action <ApplicationInsightsLoggerOptions> configureApplicationInsightsLoggerOptions)
 {
     return(builder.AddApplicationInsights(
                (telemetryConfiguration) => telemetryConfiguration.InstrumentationKey = instrumentationKey,
                configureApplicationInsightsLoggerOptions));
 }
Пример #9
0
 protected virtual void ConfigureLogging(ILoggingBuilder builder)
 {
     builder.AddApplicationInsights(options =>
     {
         options.FlushOnDispose = true;
         options.IncludeScopes  = false;
         options.TrackExceptionsAsExceptionTelemetry = true;
     });
 }
Пример #10
0
        public static ILoggingBuilder AddInfrastructureLogging(this ILoggingBuilder logging, WebHostBuilderContext hostingContext)
        {
            logging.AddApplicationInsights();
            logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
            logging.AddConsole();
            logging.AddDebug();

            return(logging);
        }
Пример #11
0
        public static void ApplicationInsightsConfiguration(HostBuilderContext context, ILoggingBuilder options)
        {
            var appInsightsKey = context.Configuration["AppInsightsInstrumentationKey"];

            if (!string.IsNullOrEmpty(appInsightsKey))
            {
                options.AddApplicationInsights(o => o.InstrumentationKey = appInsightsKey);
            }
        }
Пример #12
0
        public void AddCloudLogger(ILoggingBuilder builder, AzureOptions options)
        {
            Trace.TraceInformation("Adding Application Insights Logging");

            builder.AddApplicationInsights(o =>
            {
                o.IncludeScopes = true;
                o.TrackExceptionsAsExceptionTelemetry = true;
            });
        }
        /// <summary>
        /// Adds an ApplicationInsights logger named 'ApplicationInsights' to the factory.
        /// </summary>
        /// <param name="builder">The <see cref="ILoggingBuilder"/> to use.</param>
        /// <param name="instrumentationKey">Application insights instrumentation key.</param>
        /// <returns>Logging builder with Application Insights added to it.</returns>
        public static ILoggingBuilder AddApplicationInsights(this ILoggingBuilder builder, string instrumentationKey)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.AddApplicationInsights(
                       (telemetryConfiguration) => telemetryConfiguration.InstrumentationKey = instrumentationKey,
                       (applicationInsightsOptions) => { }));
        }
        public static void ConfigureLogging(HostBuilderContext hostBuilderContext, ILoggingBuilder loggingBuilder)
        {
            var telemetryOptions = hostBuilderContext.Configuration.GetSampleAppOptions();

            if (telemetryOptions.UseApplicationInsights)
            {
                loggingBuilder.AddApplicationInsights(telemetryOptions.ApplicationInsightsInstrumentationKey);
            }

            loggingBuilder.AddConsole((options) => { options.IncludeScopes = true; });
        }
        /// <summary>
        /// Adds an ApplicationInsights logger named 'ApplicationInsights' to the factory.
        /// </summary>
        /// <param name="builder">The <see cref="ILoggingBuilder"/> to use.</param>
        /// <param name="configureApplicationInsightsLoggerOptions">Action to configure ApplicationInsights logger.</param>
        public static ILoggingBuilder AddApplicationInsights(
            this ILoggingBuilder builder,
            Action <ApplicationInsightsLoggerOptions> configureApplicationInsightsLoggerOptions)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            return(builder.AddApplicationInsights(
                       (telemetryConfiguration) => { },
                       configureApplicationInsightsLoggerOptions));
        }
Пример #16
0
        public static void AddLogging(
            this ILoggingBuilder builder,
            WebHostBuilderContext hostingContext,
            string environment)
        {
            builder.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
            builder.AddConsole();
            builder.AddDebug();

            builder.AddApplicationInsights();
            builder.AddFilter <ApplicationInsightsLoggerProvider>("", GetLogLevel(environment));
            builder.AddFilter <ApplicationInsightsLoggerProvider>("Microsoft.EntityFrameworkCore", LogLevel.Warning);
        }
Пример #17
0
        internal static void ConfigureApplicationInsights(HostBuilderContext context, ILoggingBuilder builder)
        {
            string appInsightsKey = context.Configuration[EnvironmentSettingNames.AppInsightsInstrumentationKey];

            if (!string.IsNullOrEmpty(appInsightsKey))
            {
                builder.AddApplicationInsights(o => o.InstrumentationKey = appInsightsKey);
                builder.Services.ConfigureOptions <ApplicationInsightsLoggerOptionsSetup>();

                // Override the default SdkVersion with the functions key
                builder.Services.AddSingleton <TelemetryClient>(provider =>
                {
                    TelemetryConfiguration configuration = provider.GetService <TelemetryConfiguration>();
                    TelemetryClient client = new TelemetryClient(configuration);

                    client.Context.GetInternalContext().SdkVersion = $"azurefunctions: {ScriptHost.Version}";

                    return(client);
                });
            }
        }
Пример #18
0
        private void ConfigureLogging(ILoggingBuilder builder)
        {
            if (_runningInContainer || _isDevelopment)
            {
                builder = builder.AddConsole(o =>
                {
                    o.DisableColors = _runningInContainer;
                    o.Format        = ConsoleLoggerFormat.Systemd;
                });
            }
            else
            {
                var applicationInsightsInstrumentationKey = Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
                if (!string.IsNullOrWhiteSpace(applicationInsightsInstrumentationKey))
                {
                    builder = builder.AddApplicationInsights(applicationInsightsInstrumentationKey);
                }
            }

            builder
            .AddFilter("Microsoft", LogLevel.Warning)                  // This disables verbose logging from the .NET system
            .AddFilter("System", LogLevel.Warning)                     // from causing noise to my actual logs.
            .SetMinimumLevel(LogLevel.Trace);
        }
Пример #19
0
 public static ILoggingBuilder AddApplicationInsightsLogging(this ILoggingBuilder loggingBuilder)
 {
     loggingBuilder.AddFilter <ApplicationInsightsLoggerProvider>(string.Empty, Trace);
     loggingBuilder.AddApplicationInsights();
     return(loggingBuilder);
 }
        /// <summary>
        /// Different types of logging are enabled based on the MyProjectSettings:EnabledLoggers: [ "File", "Console", "Debug" ]
        /// </summary>
        /// <param name="hostingContext">Generic host builder context used to configure the application</param>
        /// <param name="logging">Interface used to configure logging providers</param>
        /// <param name="applicationSecrets">Interface used to access all properties in the "ApplicationSecrets" property of the appsettings.json file</param>
        /// <param name="applicationSetupConfiguration">Interface used to access all properties in the "InitialConfiguration" property of the appsettings.json file</param>
        public static void ConfigureCustomLogging(HostBuilderContext hostingContext, ILoggingBuilder logging, IApplicationSecrets applicationSecrets, IApplicationSetupConfiguration applicationSetupConfiguration)
        {
            logging.ClearProviders();

            if (applicationSetupConfiguration.IsLoggingEnabled)
            {
                logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));

                if (applicationSetupConfiguration.IsLoggerEnabled(EnabledLoggersEnum.Debug))
                {
                    logging.AddDebug();
                }

                if (applicationSetupConfiguration.IsLoggerEnabled(EnabledLoggersEnum.Console))
                {
                    logging.AddConsole();
                }

                if (applicationSetupConfiguration.IsLoggerEnabled(EnabledLoggersEnum.File))
                {
                    // The FileLogger will be configured for log4Net local logging during development.
                    // It will contain the instrumentation key for Azure Application Insights when
                    // the connection information is coming from KeyVault
                    string logConnectionString = applicationSecrets.ConnectionString("FileLogger");
                    Guid   gKey;
                    if (!string.IsNullOrEmpty(applicationSetupConfiguration.KeyVaultKey) && Guid.TryParse(logConnectionString, out gKey))
                    {
                        string instrumentationKey = logConnectionString;
                        logging.AddApplicationInsights(instrumentationKey);

                        // Adding the filter below to ensure logs of all severities
                        // is sent to ApplicationInsights.
                        logging.AddFilter <Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>
                            ("RemoteLogging", LogLevel.Debug);
                    }
                    else  // No local KeyVaultKey or environment setting for InitialConfiguration_KeyVaultKey found, so use local Log4Net logging
                    {
                        // Must set the log name prior to adding Log4Net because it must know this value
                        // before it loads the config file. It does pattern matching and substitution on the filename.
                        string logPath = null;
                        string logName = null;
                        if (!string.IsNullOrEmpty(logConnectionString))
                        {
                            string[] logParts = logConnectionString.Split(";");
                            logPath = logParts[0]?.Replace("LogPath=", "");
                            logName = logParts[1]?.Replace("LogName=", "");
                        }

                        if (!string.IsNullOrEmpty(logPath))
                        {
                            if (!Directory.Exists(logPath))
                            {
                                Directory.CreateDirectory(logPath);
                            }

                            logName = $"{logPath}\\{logName}";
                        }

                        log4net.GlobalContext.Properties["LogName"] = logName;
                        logging.AddLog4Net("log4net.config");
                    }
                }
            }
        }
 /// <summary>
 /// Adds an ApplicationInsights logger named 'ApplicationInsights' to the factory.
 /// </summary>
 /// <param name="builder">The <see cref="ILoggingBuilder"/> to use.</param>
 /// <returns>Logging builder with Application Insights added to it.</returns>
 public static ILoggingBuilder AddApplicationInsights(this ILoggingBuilder builder)
 {
     return(builder.AddApplicationInsights((applicationInsightsOptions) => { }));
 }
Пример #22
0
 /// <summary>
 /// Registers Application Insights and <see cref="ApplicationInsightsLoggerProvider"/> with an <see cref="ILoggingBuilder"/>.
 /// </summary>
 public static ILoggingBuilder AddApplicationInsights(
     this ILoggingBuilder builder)
 {
     return(builder.AddApplicationInsights(null));
 }