Skip to content

Commit 77debf8

Browse files
committed
Add Seq to WebMVC
1 parent 9d7124b commit 77debf8

4 files changed

Lines changed: 71 additions & 30 deletions

File tree

src/Web/WebMVC/Program.cs

Lines changed: 57 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,39 +3,74 @@
33
using Microsoft.Extensions.Configuration;
44
using Microsoft.Extensions.Logging;
55
using Serilog;
6+
using System;
67
using System.IO;
78

89
namespace Microsoft.eShopOnContainers.WebMVC
910
{
1011
public class Program
1112
{
12-
public static void Main(string[] args)
13+
public static readonly string AppName = typeof(Program).Namespace;
14+
public static readonly string ShortAppName = AppName.Substring(AppName.LastIndexOf('.', AppName.LastIndexOf('.') - 1) + 1);
15+
16+
public static int Main(string[] args)
1317
{
14-
BuildWebHost(args).Run();
18+
var configuration = GetConfiguration();
19+
20+
Log.Logger = CreateSerilogLogger(configuration);
21+
22+
try
23+
{
24+
Log.Information("Configuring web host ({Application})...", AppName);
25+
var host = BuildWebHost(configuration, args);
26+
27+
Log.Information("Starting web host ({Application})...", AppName);
28+
host.Run();
29+
30+
return 0;
31+
}
32+
catch (Exception ex)
33+
{
34+
Log.Fatal(ex, "Program terminated unexpectedly ({Application})!", AppName);
35+
return 1;
36+
}
37+
finally
38+
{
39+
Log.CloseAndFlush();
40+
}
1541
}
1642

17-
public static IWebHost BuildWebHost(string[] args) =>
43+
private static IWebHost BuildWebHost(IConfiguration configuration, string[] args) =>
1844
WebHost.CreateDefaultBuilder(args)
19-
.UseContentRoot(Directory.GetCurrentDirectory())
45+
.CaptureStartupErrors(false)
2046
.UseStartup<Startup>()
21-
.ConfigureAppConfiguration((builderContext, config) =>
22-
{
23-
config.AddEnvironmentVariables();
24-
})
25-
.ConfigureLogging((hostingContext, builder) =>
26-
{
27-
builder.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
28-
builder.AddConsole();
29-
builder.AddDebug();
30-
})
3147
.UseApplicationInsights()
32-
.UseSerilog((builderContext, config) =>
33-
{
34-
config
35-
.MinimumLevel.Information()
36-
.Enrich.FromLogContext()
37-
.WriteTo.Console();
38-
})
48+
.UseConfiguration(configuration)
49+
.UseSerilog()
3950
.Build();
51+
52+
private static Serilog.ILogger CreateSerilogLogger(IConfiguration configuration)
53+
{
54+
var seqServerUrl = configuration["Serilog:SeqServerUrl"];
55+
56+
return new LoggerConfiguration()
57+
.MinimumLevel.Verbose()
58+
.Enrich.WithProperty("Application", AppName)
59+
.Enrich.FromLogContext()
60+
.WriteTo.Console()
61+
.WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl)
62+
.ReadFrom.Configuration(configuration)
63+
.CreateLogger();
64+
}
65+
66+
private static IConfiguration GetConfiguration()
67+
{
68+
var builder = new ConfigurationBuilder()
69+
.SetBasePath(Directory.GetCurrentDirectory())
70+
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
71+
.AddEnvironmentVariables();
72+
73+
return builder.Build();
74+
}
4075
}
41-
}
76+
}

src/Web/WebMVC/Startup.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerF
5252
{
5353
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
5454

55-
loggerFactory.AddAzureWebAppDiagnostics();
56-
loggerFactory.AddApplicationInsights(app.ApplicationServices, LogLevel.Trace);
55+
//loggerFactory.AddAzureWebAppDiagnostics();
56+
//loggerFactory.AddApplicationInsights(app.ApplicationServices, LogLevel.Trace);
5757

5858
app.UseHealthChecks("/hc", new HealthCheckOptions()
5959
{

src/Web/WebMVC/WebMVC.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,10 @@
3737
<PackageReference Include="Microsoft.Web.LibraryManager.Build" Version="1.0.163" />
3838
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="15.5.180" />
3939
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" />
40+
<PackageReference Include="Serilog.Enrichers.Environment" Version="2.1.2" />
41+
<PackageReference Include="Serilog.Settings.Configuration" Version="3.0.1" />
4042
<PackageReference Include="Serilog.Sinks.Console" Version="3.1.1" />
43+
<PackageReference Include="Serilog.Sinks.Seq" Version="4.0.0" />
4144
</ItemGroup>
4245

4346
<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish">

src/Web/WebMVC/appsettings.json

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,15 @@
1111
"UseLoadTest": false,
1212
"ActivateCampaignDetailFunction": "False",
1313
"UseCustomizationData": false,
14-
"Logging": {
15-
"IncludeScopes": false,
16-
"LogLevel": {
17-
"Default": "Trace",
18-
"System": "Information",
19-
"Microsoft": "Information"
14+
"Serilog": {
15+
"SeqServerUrl": null,
16+
"MinimumLevel": {
17+
"Default": "Information",
18+
"Override": {
19+
"Microsoft": "Warning",
20+
"Microsoft.eShopOnContainers": "Information",
21+
"System": "Warning"
22+
}
2023
}
2124
},
2225
"ApplicationInsights": {

0 commit comments

Comments
 (0)