Ejemplo n.º 1
0
        /// <summary>
        /// Creates a configuration for Serilog
        /// </summary>
        /// <param name="componentName">Name of the component which is starting up</param>
        /// <param name="telemetryConfiguration">Configuration around telemetry for agent</param>
        /// <param name="serviceProvider">Registered services in the application</param>
        protected virtual LoggerConfiguration CreateSerilogConfiguration(string componentName, TelemetryConfiguration telemetryConfiguration, IServiceProvider serviceProvider)
        {
            var defaultLogLevel     = SerilogFactory.DetermineSinkLogLevel(telemetryConfiguration.DefaultVerbosity);
            var loggerConfiguration = new LoggerConfiguration()
                                      .MinimumLevel.Is(defaultLogLevel);

            loggerConfiguration = EnrichTelemetry(componentName, serviceProvider, loggerConfiguration);
            loggerConfiguration = FilterTelemetry(loggerConfiguration);
            loggerConfiguration = WriteTelemetryToSinks(telemetryConfiguration, loggerConfiguration);

            return(loggerConfiguration);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Configures what sinks to write telemetry to
        /// </summary>
        /// <param name="telemetryConfiguration">Agent configuration with regards to telemetry</param>
        /// <param name="loggerConfiguration">Current Serilog configuration</param>
        /// <returns>Updated Serilog configuration with sinks</returns>
        protected virtual LoggerConfiguration WriteTelemetryToSinks(TelemetryConfiguration telemetryConfiguration, LoggerConfiguration loggerConfiguration)
        {
            var appInsightsConfig = telemetryConfiguration.ApplicationInsights;

            if (appInsightsConfig?.IsEnabled == true)
            {
                var logLevel = SerilogFactory.DetermineSinkLogLevel(appInsightsConfig.Verbosity);
                loggerConfiguration.WriteTo.AzureApplicationInsights(appInsightsConfig.InstrumentationKey, restrictedToMinimumLevel: logLevel);
            }

            var consoleLogConfig = telemetryConfiguration.ContainerLogs;

            if (consoleLogConfig?.IsEnabled == true)
            {
                var logLevel = SerilogFactory.DetermineSinkLogLevel(consoleLogConfig.Verbosity);
                loggerConfiguration.WriteTo.Console(restrictedToMinimumLevel: logLevel);
            }

            return(loggerConfiguration);
        }