public void Execute(string[] args, Action <IServiceCollection, IConfigurationRoot> configure, Action <IServiceProvider, string[]> start) { var configuration = ConfigurationRootBuilder.Build(); // Add the framework services var serviceCollection = new ServiceCollection(); configure(serviceCollection, configuration); var serviceProvider = serviceCollection.BuildServiceProvider(); var logger = serviceProvider.GetService <ILogger <ConsoleAppRunner> >(); AppDomain.CurrentDomain.UnhandledException += (o, e) => logger.LogCritical(e.ExceptionObject.ToString()); start(serviceProvider, args); }
public void Execute(string[] args, Action <IServiceCollection, IConfigurationRoot> configure, Action <IServiceProvider, string[]> start) { try { var configuration = ConfigurationRootBuilder.Build(); var serviceCollection = new ServiceCollection(); Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(configuration) .CreateLogger(); serviceCollection.AddLogging(builder => { builder.AddSerilog(); }); Log.Debug("Created the logger"); configure(serviceCollection, configuration); _ServiceProvider = serviceCollection.BuildServiceProvider(); Log.Debug("About to start the console app"); start(_ServiceProvider, args); } catch (Exception ex) { _ServiceProvider.GetRequiredService <ILogger <ConsoleAppRunner> >() .LogCritical(ex.ToString()); } finally { Log.Debug("About to close and flush the log"); Log.CloseAndFlush(); } }