Example #1
0
        /// <summary>
        /// Creates the x unit logger configuration.
        /// </summary>
        /// <param name="testOutputHelper">The test output helper.</param>
        /// <param name="loggerSettings">The logger settings.</param>
        /// <param name="xUnitSerilogFormatter">The x unit serilog formatter.</param>
        /// <returns>LoggerConfiguration.</returns>
        /// <exception cref="ArgumentNullException">
        /// testOutputHelper
        /// or
        /// loggerSettings
        /// </exception>
        /// <autogeneratedoc />
        public static LoggerConfiguration CreateXUnitLoggerConfiguration(ITestOutputHelper testOutputHelper,
                                                                         ISerilogLoggerSettings loggerSettings, XUnitSerilogFormatter xUnitSerilogFormatter)
        {
            if (testOutputHelper == null)
            {
                throw new ArgumentNullException(nameof(testOutputHelper));
            }
            if (loggerSettings == null)
            {
                throw new ArgumentNullException(nameof(loggerSettings));
            }

            var loggerConfiguration = LoggerConfigurationFactory.CreateDefaultLoggerConfiguration(loggerSettings);

            if (loggerSettings.LoggingOutputFlags.HasFlag(LoggingOutputFlags.XUnitConsole))
            {
                var jsonFormatter = GetXUnitSerilogFormatter(xUnitSerilogFormatter);

                var testConsoleLoggerSetting =
                    loggerSettings.GetOrRegisterSerilogLogDefaultLevel(LoggingOutputFlags.XUnitConsole);

                if (jsonFormatter != null)
                {
                    loggerConfiguration.WriteTo.XUnit(testOutputHelper, jsonFormatter,
                                                      testConsoleLoggerSetting.MinimumLogEventLevel, testConsoleLoggerSetting.LoggingLevelSwitch);
                }
                else
                {
                    loggerConfiguration.WriteTo.XUnit(testOutputHelper, testConsoleLoggerSetting.MinimumLogEventLevel,
                                                      XUnitLoggerConfigurationExtensions.DefaultOutputTemplate,
                                                      null, testConsoleLoggerSetting.LoggingLevelSwitch);
                }
            }

            if (loggerSettings.LoggingOutputFlags.HasFlag(LoggingOutputFlags.TestCorrelator))
            {
                var testCorrelatorLoggerSetting =
                    loggerSettings.GetOrRegisterSerilogLogDefaultLevel(LoggingOutputFlags.TestCorrelator);

                // Configuration switch to TestCorrelator
                loggerConfiguration.WriteTo.TestCorrelator(testCorrelatorLoggerSetting.MinimumLogEventLevel,
                                                           testCorrelatorLoggerSetting.LoggingLevelSwitch);
            }

            return(loggerConfiguration);
        }
Example #2
0
        /// <summary>
        /// Creates the default logger configuration.
        /// </summary>
        /// <param name="loggerSettings">The logger settings.</param>
        /// <returns>LoggerConfiguration.</returns>
        /// <autogeneratedoc />
        public static LoggerConfiguration CreateDefaultLoggerConfiguration(ISerilogLoggerSettings loggerSettings)
        {
            var loggerConfiguration = new LoggerConfiguration()
                                      .ReadFrom.Configuration(loggerSettings.Configuration)
                                      .MinimumLevel.ControlledBy(loggerSettings
                                                                 .GetOrRegisterSerilogLogDefaultLevel(LoggingOutputFlags.Default).LoggingLevelSwitch)
                                      .Enrich.FromLogContext()
                                      .Enrich.With(new AsyncFriendlyStackTraceEnricher());

            if (loggerSettings.LoggingOutputFlags.HasFlag(LoggingOutputFlags.Console))
            {
                loggerConfiguration.WriteTo.Console(levelSwitch: loggerSettings
                                                    .GetOrRegisterSerilogLogDefaultLevel(LoggingOutputFlags.Console)
                                                    .LoggingLevelSwitch); // Always write to the console
            }

            return(loggerConfiguration);
        }
Example #3
0
        public static LoggerConfiguration CreateLoggerConfiguration(
            string appInsightsKey,
            string logFileName,
            ISerilogLoggerSettings loggerSettings,
            Func <LogEvent, bool> includeLogEvent)
        {
            var loggerConfiguration = CreateDefaultLoggerConfiguration(loggerSettings);

            if (loggerSettings.LoggingOutputFlags.HasFlag(LoggingOutputFlags.RollingFile))
            {
                // Write to disk if requested
                var rollingFilePath = loggerSettings.LoggingOutputFlags.HasFlag(LoggingOutputFlags.Testing)
                    ? loggerSettings.TestLogFolderPath + logFileName
                    : loggerSettings.LogFolderPath + logFileName;

                loggerConfiguration.WriteTo.RollingFile(rollingFilePath,
                                                        levelSwitch: loggerSettings.GetOrRegisterSerilogLogDefaultLevel(LoggingOutputFlags.RollingFile)
                                                        .LoggingLevelSwitch);
            }

            if (appInsightsKey != null && loggerSettings.LoggingOutputFlags.HasFlag(LoggingOutputFlags.AppInsights))
            {
                // Write to application insights if requested
                loggerConfiguration.WriteTo.ApplicationInsightsTraces
                (
                    appInsightsKey,
                    loggerSettings
                    .GetOrRegisterSerilogLogLevel(LoggingOutputFlags.AppInsights, LogEventLevel.Information)
                    .MinimumLogEventLevel,
                    null /*formatProvider*/,

                    (logEvent, formatProvider) => ConvertLogEventsToCustomTraceTelemetry(logEvent, formatProvider, includeLogEvent)
                );
            }

            return(loggerConfiguration);
        }