Skip to content

Commit de41e30

Browse files
committed
WIP - Log exceptions from asp.net diagnostics :)
1 parent 7021e45 commit de41e30

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
using System;
2+
using Exceptionless.Plugins;
3+
using Microsoft.AspNetCore.Http;
4+
using Microsoft.Extensions.DiagnosticAdapter;
5+
6+
namespace Exceptionless.AspNetCore {
7+
internal sealed class ExceptionlessDiagnosticListener {
8+
private readonly ExceptionlessClient _client;
9+
public ExceptionlessDiagnosticListener(ExceptionlessClient client) {
10+
_client = client;
11+
}
12+
13+
[DiagnosticName("Microsoft.AspNetCore.Diagnostics.HandledException")]
14+
public void OnDiagnosticHandledException(HttpContext context, Exception ex) {
15+
var contextData = new ContextData();
16+
contextData.SetSubmissionMethod("Microsoft.AspNetCore.Diagnostics.UnhandledException");
17+
contextData.Add(nameof(HttpContext), context);
18+
19+
ex.ToExceptionless(contextData, _client).Submit();
20+
}
21+
22+
[DiagnosticName("Microsoft.AspNetCore.Diagnostics.UnhandledException")]
23+
public void OnDiagnosticUnhandledException(HttpContext context, Exception ex) {
24+
var contextData = new ContextData();
25+
contextData.MarkAsUnhandledError();
26+
contextData.SetSubmissionMethod("Microsoft.AspNetCore.Diagnostics.HandledException");
27+
contextData.Add(nameof(HttpContext), context);
28+
29+
ex.ToExceptionless(contextData, _client).Submit();
30+
}
31+
32+
[DiagnosticName("Microsoft.AspNetCore.Hosting.UnhandledException")]
33+
public void OnHostingUnhandledException(HttpContext context, Exception ex) {
34+
var contextData = new ContextData();
35+
contextData.MarkAsUnhandledError();
36+
contextData.SetSubmissionMethod("Microsoft.AspNetCore.Hosting.UnhandledException");
37+
contextData.Add(nameof(HttpContext), context);
38+
39+
ex.ToExceptionless(contextData, _client).Submit();
40+
}
41+
42+
[DiagnosticName("Microsoft.AspNetCore.MiddlewareAnalysis.MiddlewareException")]
43+
public void OnMiddlewareException(Exception ex, string name) {
44+
var contextData = new ContextData();
45+
contextData.MarkAsUnhandledError();
46+
contextData.SetSubmissionMethod(name);
47+
48+
ex.ToExceptionless(contextData, _client).Submit();
49+
}
50+
}
51+
}

src/Platforms/Exceptionless.AspNetCore/ExceptionlessExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Diagnostics;
34
using Microsoft.AspNetCore.Builder;
45
using Microsoft.AspNetCore.Http;
56
using Exceptionless.AspNetCore;
67
using Exceptionless.Models;
78
using Exceptionless.Models.Data;
89
using Exceptionless.Plugins.Default;
910
using Microsoft.Extensions.Configuration;
11+
using Microsoft.Extensions.DependencyInjection;
1012

1113
namespace Exceptionless {
1214
public static class ExceptionlessExtensions {
@@ -18,6 +20,9 @@ public static IApplicationBuilder UseExceptionless(this IApplicationBuilder app,
1820
client.Configuration.AddPlugin<ExceptionlessAspNetCorePlugin>();
1921
client.Configuration.AddPlugin<IgnoreUserAgentPlugin>();
2022
//client.Configuration.Resolver.Register<ILastReferenceIdManager, WebLastReferenceIdManager>();
23+
24+
var diagnosticListener = app.ApplicationServices.GetRequiredService<DiagnosticListener>();
25+
diagnosticListener?.SubscribeWithAdapter(new ExceptionlessDiagnosticListener(client));
2126

2227
return app.UseMiddleware<ExceptionlessMiddleware>(client);
2328
}

src/Platforms/Exceptionless.AspNetCore/project.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@
3636
"Microsoft.AspNetCore.Http.Abstractions": "1.0.0-rc2-final",
3737
"Microsoft.AspNetCore.Http.Extensions": "1.0.0-rc2-final",
3838
"Microsoft.Extensions.Configuration.Abstractions": "1.0.0-rc2-final",
39-
"Microsoft.Net.Http.Headers": "1.0.0-rc2-final"
39+
"Microsoft.Extensions.DiagnosticAdapter": "1.0.0-rc2-final",
40+
"Microsoft.Net.Http.Headers": "1.0.0-rc2-final",
41+
"System.Diagnostics.DiagnosticSource": "4.0.0-rc2-24027"
4042
},
4143
"frameworks": {
4244
"netstandard1.5": {

0 commit comments

Comments
 (0)