Make sure BTCPayServer exit cleanly in case of crash during startup, see https://github.com/aspnet/Hosting/issues/1194

This commit is contained in:
nicolas.dorier
2018-01-15 14:42:51 +09:00
parent ecb82f2cc9
commit c9b5f89f17
4 changed files with 11 additions and 10 deletions

View File

@@ -37,7 +37,7 @@ services:
- postgres - postgres
nbxplorer: nbxplorer:
image: nicolasdorier/nbxplorer:1.0.0.70 image: nicolasdorier/nbxplorer:1.0.0.71
ports: ports:
- "32838:32838" - "32838:32838"
expose: expose:

View File

@@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework> <TargetFramework>netcoreapp2.0</TargetFramework>
<Version>1.0.0.82</Version> <Version>1.0.0.83</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Remove="Build\dockerfiles\**" /> <Compile Remove="Build\dockerfiles\**" />

View File

@@ -12,7 +12,11 @@ namespace BTCPayServer.Logging
{ {
public class CustomConsoleLogProvider : ILoggerProvider public class CustomConsoleLogProvider : ILoggerProvider
{ {
ConsoleLoggerProcessor _Processor = new ConsoleLoggerProcessor(); ConsoleLoggerProcessor _Processor;
public CustomConsoleLogProvider(ConsoleLoggerProcessor processor)
{
_Processor = processor;
}
public ILogger CreateLogger(string categoryName) public ILogger CreateLogger(string categoryName)
{ {
return new CustomConsoleLogger(categoryName, (a, b) => true, false, _Processor); return new CustomConsoleLogger(categoryName, (a, b) => true, false, _Processor);

View File

@@ -24,7 +24,8 @@ namespace BTCPayServer
{ {
ServicePointManager.DefaultConnectionLimit = 100; ServicePointManager.DefaultConnectionLimit = 100;
IWebHost host = null; IWebHost host = null;
CustomConsoleLogProvider loggerProvider = new CustomConsoleLogProvider(); var processor = new ConsoleLoggerProcessor();
CustomConsoleLogProvider loggerProvider = new CustomConsoleLogProvider(processor);
var loggerFactory = new LoggerFactory(); var loggerFactory = new LoggerFactory();
loggerFactory.AddProvider(loggerProvider); loggerFactory.AddProvider(loggerProvider);
@@ -44,7 +45,7 @@ namespace BTCPayServer
.ConfigureLogging(l => .ConfigureLogging(l =>
{ {
l.AddFilter("Microsoft", LogLevel.Error); l.AddFilter("Microsoft", LogLevel.Error);
l.AddProvider(new CustomConsoleLogProvider()); l.AddProvider(new CustomConsoleLogProvider(processor));
}) })
.UseStartup<Startup>() .UseStartup<Startup>()
.Build(); .Build();
@@ -61,13 +62,9 @@ namespace BTCPayServer
if (!string.IsNullOrEmpty(ex.Message)) if (!string.IsNullOrEmpty(ex.Message))
Logs.Configuration.LogError(ex.Message); Logs.Configuration.LogError(ex.Message);
} }
catch (Exception exception)
{
logger.LogError("Exception thrown while running the server");
logger.LogError(exception.ToString());
}
finally finally
{ {
processor.Dispose();
if (host != null) if (host != null)
host.Dispose(); host.Dispose();
loggerProvider.Dispose(); loggerProvider.Dispose();