Exemple #1
0
        public static void Main(string[] args)
        {
            var startUpCorrelationId = Guid.NewGuid().ToString();

            try
            {
                var configuration = InitialiseConfiguration(new ConfigurationBuilder(), args).Build();
                InitialiseLoggingAndErrorHandling(configuration);

                IWebHost host;

                using (_logger.BeginScopeWithCommonData(startUpCorrelationId, null, null, null, true, false))
                {
                    _logger.LogInformation("Logging is all set up and ready to go");

                    _logger.LogInformation("About to call BuildWebHost");

                    host = WebHost.CreateDefaultBuilder(args)
                           .UseNLog()
                           .ConfigureServices(services =>
                    {
                        services.AddPlatformServices();
                    })
                           .ConfigureAppConfiguration(cfg => InitialiseConfiguration(cfg, args))
                           .ConfigureAppMetricsHostingConfiguration(options =>
                    {
                        options.AllEndpointsPort = configuration.GetValue <int>("MetricsEndpoints:AllEndpointsPort");
                    })
                           .UseStartup <Startup>()
                           .Build();

                    _logger.LogInformation("About to call webHost.Run");
                }

                host.Run();
            }
            catch (Exception ex)
                when(PassToErrorHandler(ex))
                {
                    // Do not interfere with what would ordinarily happen if we didn't try to intercept because
                    // upstream components will likely be catching exceptions and / or the checking the return code

                    _logger.LogInformation("Microservice about to throw unhandled exception.  Process may be terminated.");
                    throw;
                }

            _logger.LogInformation("Microservice instance is shutting down.");
        }