diff --git a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj
index 6300d6711..ec34d3328 100644
--- a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj
+++ b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Mobile.Shopping.HttpAggregator.csproj
@@ -16,9 +16,11 @@
-
+
+
+
diff --git a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Program.cs b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Program.cs
index fc21a70a4..f7cc58c6b 100644
--- a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Program.cs
+++ b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/Program.cs
@@ -1,44 +1,81 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Threading.Tasks;
-using Microsoft.AspNetCore;
+using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Configuration.Json;
using Serilog;
+using System;
+using System.IO;
namespace Microsoft.eShopOnContainers.Mobile.Shopping.HttpAggregator
{
public class Program
{
- public static void Main(string[] args)
+ public static readonly string AppName = typeof(Program).Namespace;
+ public static readonly string ShortAppName = AppName.Substring(AppName.LastIndexOf('.', AppName.LastIndexOf('.') - 1) + 1);
+
+ public static int Main(string[] args)
{
- BuildWebHost(args).Run();
+ var configuration = GetConfiguration();
+
+ Log.Logger = CreateSerilogLogger(configuration);
+
+ try
+ {
+ Log.Information("Configuring web host ({Application})...", AppName);
+ var host = BuildWebHost(configuration, args);
+
+ Log.Information("Starting web host ({Application})...", AppName);
+ host.Run();
+
+ return 0;
+ }
+ catch (Exception ex)
+ {
+ Log.Fatal(ex, "Program terminated unexpectedly ({Application})!", AppName);
+ return 1;
+ }
+ finally
+ {
+ Log.CloseAndFlush();
+ }
}
- public static IWebHost BuildWebHost(string[] args) =>
- WebHost
- .CreateDefaultBuilder(args)
- .ConfigureAppConfiguration(cb =>
- {
- var sources = cb.Sources;
- sources.Insert(3, new Microsoft.Extensions.Configuration.Json.JsonConfigurationSource()
- {
- Optional = true,
- Path = "appsettings.localhost.json",
- ReloadOnChange = false
- });
- })
+ private static IWebHost BuildWebHost(IConfiguration configuration, string[] args) =>
+ WebHost.CreateDefaultBuilder(args)
+ .CaptureStartupErrors(false)
.UseStartup()
- .UseSerilog((builderContext, config) =>
- {
- config
- .MinimumLevel.Information()
- .Enrich.FromLogContext()
- .WriteTo.Console();
- })
+ .UseSerilog()
.Build();
+
+ private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration)
+ {
+ var seqServerUrl = configuration["Serilog:SeqServerUrl"];
+
+ return new LoggerConfiguration()
+ .MinimumLevel.Verbose()
+ .Enrich.WithProperty("Application", AppName)
+ .Enrich.FromLogContext()
+ .WriteTo.Console()
+ .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl)
+ .ReadFrom.Configuration(configuration)
+ .CreateLogger();
+ }
+
+ private static IConfiguration GetConfiguration()
+ {
+ var builder = new ConfigurationBuilder()
+ .SetBasePath(Directory.GetCurrentDirectory())
+ .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
+ .AddEnvironmentVariables();
+
+ builder.Sources.Insert(3, new JsonConfigurationSource()
+ {
+ Optional = true,
+ Path = "appsettings.localhost.json",
+ ReloadOnChange = false
+ });
+
+ return builder.Build();
+ }
}
-}
+}
\ No newline at end of file
diff --git a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/appsettings.json b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/appsettings.json
index 26bb0ac7a..7df46be4b 100644
--- a/src/ApiGateways/Mobile.Bff.Shopping/aggregator/appsettings.json
+++ b/src/ApiGateways/Mobile.Bff.Shopping/aggregator/appsettings.json
@@ -1,14 +1,12 @@
{
- "Logging": {
- "IncludeScopes": false,
- "Debug": {
- "LogLevel": {
- "Default": "Warning"
- }
- },
- "Console": {
- "LogLevel": {
- "Default": "Warning"
+ "Serilog": {
+ "SeqServerUrl": null,
+ "MinimumLevel": {
+ "Default": "Information",
+ "Override": {
+ "Microsoft": "Warning",
+ "Microsoft.eShopOnContainers": "Information",
+ "System": "Warning"
}
}
}
diff --git a/src/ApiGateways/Web.Bff.Shopping/aggregator/Program.cs b/src/ApiGateways/Web.Bff.Shopping/aggregator/Program.cs
index 4bbac21e6..d5cdd96be 100644
--- a/src/ApiGateways/Web.Bff.Shopping/aggregator/Program.cs
+++ b/src/ApiGateways/Web.Bff.Shopping/aggregator/Program.cs
@@ -6,6 +6,7 @@ using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.Configuration.Json;
using Microsoft.Extensions.Logging;
using Serilog;
@@ -13,32 +14,72 @@ namespace Microsoft.eShopOnContainers.Web.Shopping.HttpAggregator
{
public class Program
{
- public static void Main(string[] args)
+ public static readonly string AppName = typeof(Program).Namespace;
+ public static readonly string ShortAppName = AppName.Substring(AppName.LastIndexOf('.', AppName.LastIndexOf('.') - 1) + 1);
+
+ public static int Main(string[] args)
{
- BuildWebHost(args).Run();
+ var configuration = GetConfiguration();
+
+ Log.Logger = CreateSerilogLogger(configuration);
+
+ try
+ {
+ Log.Information("Configuring web host ({Application})...", AppName);
+ var host = BuildWebHost(configuration, args);
+
+ Log.Information("Starting web host ({Application})...", AppName);
+ host.Run();
+
+ return 0;
+ }
+ catch (Exception ex)
+ {
+ Log.Fatal(ex, "Program terminated unexpectedly ({Application})!", AppName);
+ return 1;
+ }
+ finally
+ {
+ Log.CloseAndFlush();
+ }
}
- public static IWebHost BuildWebHost(string[] args) =>
- WebHost
- .CreateDefaultBuilder(args)
- .ConfigureAppConfiguration(cb =>
- {
- var sources = cb.Sources;
- sources.Insert(3, new Microsoft.Extensions.Configuration.Json.JsonConfigurationSource()
- {
- Optional = true,
- Path = "appsettings.localhost.json",
- ReloadOnChange = false
- });
- })
+ private static IWebHost BuildWebHost(IConfiguration configuration, string[] args) =>
+ WebHost.CreateDefaultBuilder(args)
+ .CaptureStartupErrors(false)
.UseStartup()
- .UseSerilog((builderContext, config) =>
- {
- config
- .MinimumLevel.Information()
- .Enrich.FromLogContext()
- .WriteTo.Console();
- })
+ .UseSerilog()
.Build();
+
+ private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration)
+ {
+ var seqServerUrl = configuration["Serilog:SeqServerUrl"];
+
+ return new LoggerConfiguration()
+ .MinimumLevel.Verbose()
+ .Enrich.WithProperty("Application", AppName)
+ .Enrich.FromLogContext()
+ .WriteTo.Console()
+ .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl)
+ .ReadFrom.Configuration(configuration)
+ .CreateLogger();
+ }
+
+ private static IConfiguration GetConfiguration()
+ {
+ var builder = new ConfigurationBuilder()
+ .SetBasePath(Directory.GetCurrentDirectory())
+ .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
+ .AddEnvironmentVariables();
+
+ builder.Sources.Insert(3, new JsonConfigurationSource()
+ {
+ Optional = true,
+ Path = "appsettings.localhost.json",
+ ReloadOnChange = false
+ });
+
+ return builder.Build();
+ }
}
}
diff --git a/src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj b/src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj
index de2f55ab8..e5242c998 100644
--- a/src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj
+++ b/src/ApiGateways/Web.Bff.Shopping/aggregator/Web.Shopping.HttpAggregator.csproj
@@ -14,10 +14,13 @@
-
+
+
+
+
diff --git a/src/ApiGateways/Web.Bff.Shopping/aggregator/appsettings.json b/src/ApiGateways/Web.Bff.Shopping/aggregator/appsettings.json
index 26bb0ac7a..7df46be4b 100644
--- a/src/ApiGateways/Web.Bff.Shopping/aggregator/appsettings.json
+++ b/src/ApiGateways/Web.Bff.Shopping/aggregator/appsettings.json
@@ -1,14 +1,12 @@
{
- "Logging": {
- "IncludeScopes": false,
- "Debug": {
- "LogLevel": {
- "Default": "Warning"
- }
- },
- "Console": {
- "LogLevel": {
- "Default": "Warning"
+ "Serilog": {
+ "SeqServerUrl": null,
+ "MinimumLevel": {
+ "Default": "Information",
+ "Override": {
+ "Microsoft": "Warning",
+ "Microsoft.eShopOnContainers": "Information",
+ "System": "Warning"
}
}
}