diff --git a/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj b/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj
index dfc6a45c3..efa1976b9 100644
--- a/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj
+++ b/src/Services/Ordering/Ordering.SignalrHub/Ordering.SignalrHub.csproj
@@ -11,23 +11,25 @@
-
+
-
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
diff --git a/src/Services/Ordering/Ordering.SignalrHub/Program.cs b/src/Services/Ordering/Ordering.SignalrHub/Program.cs
index e8550dcc8..a0769cce7 100644
--- a/src/Services/Ordering/Ordering.SignalrHub/Program.cs
+++ b/src/Services/Ordering/Ordering.SignalrHub/Program.cs
@@ -13,21 +13,67 @@ namespace Ordering.SignalrHub
{
public class Program
{
- public static void Main(string[] args)
+ public static readonly string AppName = typeof(Program).Namespace;
+ public static readonly string AppShortName = 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) =>
+ private static IWebHost BuildWebHost(IConfiguration configuration, string[] args) =>
WebHost.CreateDefaultBuilder(args)
+ .CaptureStartupErrors(false)
.UseStartup()
- .UseSerilog((builderContext, config) =>
- {
- config
- .MinimumLevel.Information()
- .Enrich.FromLogContext()
- .WriteTo.Console();
- })
+ .UseConfiguration(configuration)
+ .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();
+
+ return builder.Build();
+ }
+
}
}
diff --git a/src/Services/Ordering/Ordering.SignalrHub/Startup.cs b/src/Services/Ordering/Ordering.SignalrHub/Startup.cs
index 555606a67..ad72298db 100644
--- a/src/Services/Ordering/Ordering.SignalrHub/Startup.cs
+++ b/src/Services/Ordering/Ordering.SignalrHub/Startup.cs
@@ -30,6 +30,8 @@ namespace Ordering.SignalrHub
Configuration = configuration;
}
+ public IConfiguration Configuration { get; }
+
// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public IServiceProvider ConfigureServices(IServiceCollection services)
@@ -115,15 +117,13 @@ namespace Ordering.SignalrHub
return new AutofacServiceProvider(container.Build());
}
- public IConfiguration Configuration { get; }
-
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
- loggerFactory.AddConsole(Configuration.GetSection("Logging"));
- loggerFactory.AddDebug();
- loggerFactory.AddAzureWebAppDiagnostics();
- loggerFactory.AddApplicationInsights(app.ApplicationServices, LogLevel.Trace);
+ //loggerFactory.AddConsole(Configuration.GetSection("Logging"));
+ //loggerFactory.AddDebug();
+ //loggerFactory.AddAzureWebAppDiagnostics();
+ //loggerFactory.AddApplicationInsights(app.ApplicationServices, LogLevel.Trace);
var pathBase = Configuration["PATH_BASE"];
if (!string.IsNullOrEmpty(pathBase))
@@ -159,13 +159,13 @@ namespace Ordering.SignalrHub
private void ConfigureEventBus(IApplicationBuilder app)
{
var eventBus = app.ApplicationServices.GetRequiredService();
-
+
eventBus.Subscribe();
eventBus.Subscribe();
eventBus.Subscribe();
eventBus.Subscribe();
eventBus.Subscribe();
- eventBus.Subscribe();
+ eventBus.Subscribe();
}
private void ConfigureAuthService(IServiceCollection services)
diff --git a/src/Services/Ordering/Ordering.SignalrHub/appsettings.json b/src/Services/Ordering/Ordering.SignalrHub/appsettings.json
index ab02fda0f..bd752de48 100644
--- a/src/Services/Ordering/Ordering.SignalrHub/appsettings.json
+++ b/src/Services/Ordering/Ordering.SignalrHub/appsettings.json
@@ -1,11 +1,14 @@
{
"IdentityUrl": "http://localhost:5105",
- "Logging": {
- "IncludeScopes": false,
- "LogLevel": {
- "Default": "Trace",
- "System": "Information",
- "Microsoft": "Information"
+ "Serilog": {
+ "SeqServerUrl": null,
+ "MinimumLevel": {
+ "Default": "Information",
+ "Override": {
+ "Microsoft": "Warning",
+ "Microsoft.eShopOnContainers": "Information",
+ "System": "Warning"
+ }
}
},
"AzureServiceBusEnabled": false,