Example #1
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);
        }