public void ConfigureServices(IServiceCollection services, HostBuilderContext hostBuilderContext) { var config = hostBuilderContext.Configuration; services.AddSingleton(config); // Bind the 'Settings' section to the ISettings class var settings = new Domain.Models.Settings(); config.Bind("Settings", settings); services.TryAddSingleton <ISettings>(settings); var randomPostSettings = new Domain.Models.RandomPostSettings(); config.Bind("Settings:RandomPost", randomPostSettings); services.TryAddSingleton <IRandomPostSettings>(randomPostSettings); // Configure the logger services.AddLogging((loggingBuilder => { //loggingBuilder.ClearProviders(); loggingBuilder.SetMinimumLevel(LogLevel.Trace); loggingBuilder.AddConfiguration(config); })); // Configure all the services ConfigureTwitter(services); ConfigureJsonFeedReader(services); ConfigureSyndicationFeedReader(services); ConfigureYouTubeReader(services); ConfigureFunction(services); }
public override void Configure(IFunctionsHostBuilder builder) { ArgumentNullException.ThrowIfNull(builder); var executionContextOptions = builder.Services.BuildServiceProvider() .GetService <IOptions <ExecutionContextOptions> >(); if (executionContextOptions is null) { throw new ApplicationException("Could not get the ExecutionContextOptions from the Builder"); } var currentDirectory = executionContextOptions.Value.AppDirectory; // Setup the Configuration Source var config = new ConfigurationBuilder() .SetBasePath(currentDirectory) .AddJsonFile("local.settings.json", true) .AddUserSecrets(Assembly.GetExecutingAssembly(), true) .AddEnvironmentVariables() .Build(); builder.Services.AddSingleton <IConfiguration>(config); LogManager.Setup() .SetupExtensions(e => e.AutoLoadAssemblies(false)) .LoadConfigurationFromFile(currentDirectory + Path.DirectorySeparatorChar + "nlog.config", optional: false) .LoadConfiguration(configurationBuilder => configurationBuilder.LogFactory.AutoShutdown = false); SetLoggingGlobalDiagnosticsContext(); // Bind the 'Settings' section to the ISettings class var settings = new Domain.Models.Settings(); config.Bind("Settings", settings); builder.Services.TryAddSingleton <ISettings>(settings); var randomPostSettings = new Domain.Models.RandomPostSettings(); config.Bind("Settings:RandomPost", randomPostSettings); builder.Services.TryAddSingleton <IRandomPostSettings>(randomPostSettings); // Configure the logger builder.Services.AddLogging((loggingBuilder => { //loggingBuilder.ClearProviders(); loggingBuilder.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace); loggingBuilder.AddConfiguration(config); loggingBuilder.AddNLog(new NLogProviderOptions { ShutdownOnDispose = true }); })); // Configure all the services ConfigureTwitter(builder); ConfigureJsonFeedReader(builder); ConfigureSyndicationFeedReader(builder); ConfigureYouTubeReader(builder); ConfigureFunction(builder); }