public static ILoggingBuilder AddKRFLogger(this ILoggingBuilder builder, KRFLogConfiguration settings, IConfiguration configuration) { if (settings == null) { throw new Exception("Configuration is missing KRFLogger settings"); } if (settings.KRFLogDestination == null || settings.KRFLogDestination.Length == 0) { throw new Exception("Configuration is missing KRFLogDestination settings on KRFLogger"); } builder.ClearProviders(); builder.AddConfiguration(configuration.GetSection(KRFApiSettings.Logging_Key)); if (settings.KRFLogDestination.Any(ld => ld.Equals(KRFLogDestinationEnum.ToConsole))) { builder.AddConsole(); } if (settings.KRFLogDestination.Any(ld => ld.Equals(KRFLogDestinationEnum.ToDebug))) { builder.AddDebug(); } if (settings.KRFLogDestination.Any(ld => ld.Equals(KRFLogDestinationEnum.ToEvents))) { builder.AddEventLog(); } if (settings.KRFLogDestination.Any(ld => ld.Equals(KRFLogDestinationEnum.ToEventSource))) { builder.AddEventSourceLogger(); } if (settings.KRFLogDestination.Any(ld => ld.Equals(KRFLogDestinationEnum.ToFile)) && settings.KRFFileLogger != null) { builder.AddKRFLogToFileLogger(o => { o = settings.KRFFileLogger; }); } if (settings.KRFLogDestination.Any(ld => ld.Equals(KRFLogDestinationEnum.ToServer))) { throw new Exception("Logging to server not implemented"); //builder.AddKRFLogToServerLogger( loggerConfig.GetSection( KRFApiSettings.KRFServerLoggerConfig_Key ) ); } return(builder); }