Skip to content

Commit 1cfd7db

Browse files
committed
Improve http host error logging
1 parent c492a9e commit 1cfd7db

22 files changed

Lines changed: 118 additions & 15 deletions

src/Dibix.Http.Host/Data/DatabaseScopeMiddleware.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System.Threading.Tasks;
2-
using Dibix.Http.Host.Extensions;
32
using Dibix.Http.Server;
43
using Microsoft.AspNetCore.Http;
54
using Microsoft.Extensions.DependencyInjection;
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using System.Collections.Generic;
2+
using System.Threading.Tasks;
3+
using Dibix.Http.Server;
4+
using Microsoft.AspNetCore.Http;
5+
using Microsoft.Extensions.Logging;
6+
using Microsoft.Extensions.Options;
7+
8+
namespace Dibix.Http.Host
9+
{
10+
internal sealed class DiagnosticsMiddleware
11+
{
12+
private readonly RequestDelegate _next;
13+
private readonly ILogger<DiagnosticsMiddleware> _logger;
14+
private readonly IOptions<DiagnosticsOptions> _diagnosticsOptions;
15+
16+
public DiagnosticsMiddleware(RequestDelegate next, ILogger<DiagnosticsMiddleware> logger, IOptions<DiagnosticsOptions> diagnosticsOptions)
17+
{
18+
_next = next;
19+
_logger = logger;
20+
_diagnosticsOptions = diagnosticsOptions;
21+
}
22+
23+
public async Task InvokeAsync(HttpContext context)
24+
{
25+
IDiagnosticScopeProvider scopeProvider = _diagnosticsOptions.Value.Provider;
26+
IEnumerable<KeyValuePair<string, object>> scopeProperties = scopeProvider.CollectScopeProperties(context);
27+
using (_logger.BeginScope(scopeProperties))
28+
{
29+
await _next(context).ConfigureAwait(false);
30+
}
31+
}
32+
}
33+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
using Dibix.Http.Server;
2+
3+
namespace Dibix.Http.Host
4+
{
5+
internal sealed class DiagnosticsOptions
6+
{
7+
public IDiagnosticScopeProvider Provider { get; set; } = new DefaultDiagnosticScope();
8+
}
9+
}

src/Dibix.Http.Host/Dibix.Http.Host.csproj.DotSettings

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=configuration/@EntryIndexedValue">True</s:Boolean>
55
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=cors/@EntryIndexedValue">True</s:Boolean>
66
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=data/@EntryIndexedValue">True</s:Boolean>
7+
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=diagnostics/@EntryIndexedValue">True</s:Boolean>
78
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=model/@EntryIndexedValue">True</s:Boolean>
89
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=registration/@EntryIndexedValue">True</s:Boolean>
910
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=routing/@EntryIndexedValue">True</s:Boolean>

src/Dibix.Http.Host/Model/HttpRequestDescriptor.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.Net;
66
using System.Security.Claims;
77
using System.Threading.Tasks;
8-
using Dibix.Http.Host.Extensions;
98
using Dibix.Http.Server;
109
using Microsoft.AspNetCore.Authentication;
1110
using Microsoft.AspNetCore.Http;

src/Dibix.Http.Host/Program.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,11 @@ private static async Task Main(string[] args)
7171
.AddScoped<IOptionsFactory<JwtBearerOptions>, ScopedJwtBearerOptionsFactory>();
7272
*/
7373

74-
services.AddLogging(x => x.AddSimpleConsole(y => y.TimestampFormat = "\x1B[1'm'\x1B[37'm'[yyyy-MM-dd HH:mm:ss.fff\x1B[39'm'\x1B[22'm'] "));
74+
services.AddLogging(x =>
75+
{
76+
x.AddSimpleConsole(y => y.TimestampFormat = "\x1B[1'm'\x1B[37'm'[yyyy-MM-dd HH:mm:ss.fff\x1B[39'm'\x1B[22'm'] ");
77+
x.Configure(y => y.ActivityTrackingOptions = ActivityTrackingOptions.None);
78+
});
7579

7680
services.AddAuthentication()
7781
.AddJwtBearer(x =>
@@ -113,6 +117,7 @@ private static async Task Main(string[] args)
113117

114118
WebApplication app = builder.Build();
115119

120+
app.UseMiddleware<DiagnosticsMiddleware>();
116121
app.UseExceptionHandler();
117122
app.UseRouting();
118123
app.UseMiddleware<DatabaseScopeMiddleware>();

src/Dibix.Http.Host/Registration/DefaultEndpointRegistrar.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using Dibix.Http.Server;
23
using Microsoft.AspNetCore.Builder;
34
using Microsoft.AspNetCore.Routing;
45
using Microsoft.Extensions.Logging;

src/Dibix.Http.Host/Registration/EndpointAuthorizationHandlerContextFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System.Collections.Generic;
22
using System.Linq;
33
using System.Security.Claims;
4-
using Dibix.Http.Host.Extensions;
4+
using Dibix.Http.Server;
55
using Microsoft.AspNetCore.Authorization;
66
using Microsoft.AspNetCore.Authorization.Infrastructure;
77
using Microsoft.AspNetCore.Http;

src/Dibix.Http.Host/Registration/HttpHostExtensionRegistrar.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@ IHttpHostExtensionConfigurationBuilder IHttpHostExtensionConfigurationBuilder.Co
8282
return this;
8383
}
8484

85+
public IHttpHostExtensionConfigurationBuilder ConfigureDiagnosticScopeProvider<TProvider>() where TProvider : IDiagnosticScopeProvider, new()
86+
{
87+
_services.Configure<DiagnosticsOptions>(x => x.Provider = new TProvider());
88+
return this;
89+
}
90+
8591
IHttpHostExtensionConfigurationBuilder IHttpHostExtensionConfigurationBuilder.OnHostStarted(Func<IHttpHostExtensionScope, Task> handler)
8692
{
8793
_onHostStartedExtension = handler;

src/Dibix.Http.Host/Registration/IEndpointImplementationProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using Dibix.Http.Server;
23

34
namespace Dibix.Http.Host
45
{

0 commit comments

Comments
 (0)