Skip to content

Commit ea53c37

Browse files
committed
Added support for checking for ignored exceptions.
1 parent 6c4be93 commit ea53c37

8 files changed

+62
-48
lines changed

Source/Shared/Configuration/ExceptionlessConfiguration.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,7 @@ public void AddUserAgentBotPatterns(IEnumerable<string> userAgentBotPatterns) {
236236
/// <summary>
237237
/// A list of event exclusion callbacks that will keep events from being submitted.
238238
/// </summary>
239-
public IEnumerable<Func<Event, bool>> EventExclusions
240-
{
239+
public IEnumerable<Func<Event, bool>> EventExclusions {
241240
get { return _eventExclusions; }
242241
}
243242

@@ -246,7 +245,8 @@ public IEnumerable<Func<Event, bool>> EventExclusions
246245
/// </summary>
247246
/// <param name="eventExclusionCallback">The callback to call to check to see if an event should be excluded.</param>
248247
public void AddEventExclusion(Func<Event, bool> eventExclusionCallback) {
249-
_eventExclusions.Add(eventExclusionCallback);
248+
if (eventExclusionCallback != null)
249+
_eventExclusions.Add(eventExclusionCallback);
250250
}
251251

252252
/// <summary>

Source/Shared/Exceptionless.Portable.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,13 @@
6969
<Compile Include="Plugins\Default\100_HeartbeatPlugin.cs" />
7070
<Compile Include="Plugins\Default\110_IgnoreUserAgentPlugin.cs" />
7171
<Compile Include="Plugins\Default\ActionPlugin.cs" />
72-
<Compile Include="Plugins\Default\010_ConfigurationDefaultsPlugin.cs" />
72+
<Compile Include="Plugins\Default\015_ConfigurationDefaultsPlugin.cs" />
7373
<Compile Include="Plugins\Default\090_SubmissionMethodPlugin.cs" />
7474
<Compile Include="Plugins\Default\040_ReferenceIdPlugin.cs" />
7575
<Compile Include="Plugins\Default\020_SimpleErrorPlugin.cs" />
7676
<Compile Include="Plugins\Default\050_EnvironmentInfoPlugin.cs" />
77-
<Compile Include="Plugins\Default\015_HandleAggregateExceptionsPlugin.cs" />
78-
<Compile Include="Plugins\Default\000_EventExclusionPlugin.cs" />
77+
<Compile Include="Plugins\Default\005_HandleAggregateExceptionsPlugin.cs" />
78+
<Compile Include="Plugins\Default\010_EventExclusionPlugin.cs" />
7979
<Compile Include="Plugins\PriortyAttribute.cs" />
8080
<Compile Include="EventBuilder.cs" />
8181
<Compile Include="Events\ConfigurationUpdatedEventArgs.cs" />

Source/Shared/Plugins/Default/000_EventExclusionPlugin.cs

Lines changed: 0 additions & 36 deletions
This file was deleted.

Source/Shared/Plugins/Default/015_HandleAggregateExceptionsPlugin.cs renamed to Source/Shared/Plugins/Default/005_HandleAggregateExceptionsPlugin.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using Exceptionless.Models;
44

55
namespace Exceptionless.Plugins {
6-
[Priority(15)]
6+
[Priority(5)]
77
public class HandleAggregateExceptionsPlugin : IEventPlugin {
88
public void Run(EventPluginContext context) {
99
var aggregateException = context.ContextData.GetException() as AggregateException;
@@ -27,4 +27,4 @@ public void Run(EventPluginContext context) {
2727
context.Cancel = true;
2828
}
2929
}
30-
}
30+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
using System;
2+
using Exceptionless.Logging;
3+
using Exceptionless.Models;
4+
5+
namespace Exceptionless.Plugins.Default {
6+
[Priority(10)]
7+
public class EventExclusionPlugin : IEventPlugin {
8+
public void Run(EventPluginContext context) {
9+
foreach (var callback in context.Client.Configuration.EventExclusions) {
10+
try {
11+
if (!callback(context.Event)) {
12+
context.Log.Info("Cancelling event from custom event exclusion.");
13+
context.Cancel = true;
14+
return;
15+
}
16+
} catch (Exception ex) {
17+
context.Log.Error(ex, "Error running custom event exclusion: " + ex.Message);
18+
}
19+
}
20+
21+
if (context.Event.IsLog()) {
22+
var minLogLevel = context.Client.Configuration.Settings.GetMinLogLevel(context.Event.Source);
23+
var logLevel = LogLevel.FromString(context.Event.Data.GetValueOrDefault(Event.KnownDataKeys.Level, "Trace").ToString());
24+
25+
if (logLevel < minLogLevel) {
26+
context.Log.Info("Cancelling log event due to minimum log level.");
27+
context.Cancel = true;
28+
}
29+
30+
return;
31+
}
32+
33+
if (!context.Client.Configuration.Settings.GetTypeAndSourceEnabled(context.Event.Type, context.Event.Source)) {
34+
context.Log.Info(String.Format("Cancelling event from excluded type: {0} and source: {1}", context.Event.Type, context.Event.Source));
35+
context.Cancel = true;
36+
return;
37+
}
38+
39+
var exception = context.ContextData.GetException();
40+
while (exception != null) {
41+
if (!context.Client.Configuration.Settings.GetTypeAndSourceEnabled(Event.KnownTypes.Error, exception.GetType().FullName)) {
42+
context.Log.Info("Cancelling error from excluded exception type: " + exception.GetType().FullName);
43+
context.Cancel = true;
44+
return;
45+
}
46+
47+
exception = exception.InnerException;
48+
}
49+
}
50+
}
51+
}

Source/Shared/Plugins/Default/010_ConfigurationDefaultsPlugin.cs renamed to Source/Shared/Plugins/Default/015_ConfigurationDefaultsPlugin.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
using System;
22

33
namespace Exceptionless.Plugins.Default {
4-
[Priority(10)]
4+
[Priority(15)]
55
public class ConfigurationDefaultsPlugin : IEventPlugin {
66
public void Run(EventPluginContext context) {
77
foreach (string tag in context.Client.Configuration.DefaultTags)

Source/Shared/Plugins/EventPluginManager.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ public static void Run(EventPluginContext context) {
2424
}
2525

2626
public static void AddDefaultPlugins(ExceptionlessConfiguration config) {
27-
config.AddPlugin<ConfigurationDefaultsPlugin>();
2827
config.AddPlugin<HandleAggregateExceptionsPlugin>();
28+
config.AddPlugin<EventExclusionPlugin>();
29+
config.AddPlugin<ConfigurationDefaultsPlugin>();
2930
config.AddPlugin<SimpleErrorPlugin>();
3031
config.AddPlugin<DuplicateCheckerPlugin>();
3132
config.AddPlugin<EnvironmentInfoPlugin>();

Source/Tests/Exceptionless.Tests.csproj

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@
3838
<Prefer32Bit>false</Prefer32Bit>
3939
</PropertyGroup>
4040
<ItemGroup>
41-
<Reference Include="BenchmarkDotNet, Version=0.9.4.0, Culture=neutral, processorArchitecture=MSIL">
42-
<HintPath>..\..\packages\BenchmarkDotNet.0.9.4\lib\net45\BenchmarkDotNet.dll</HintPath>
4341
<Reference Include="BenchmarkDotNet, Version=0.9.5.0, Culture=neutral, PublicKeyToken=aa0ca2f9092cefc4, processorArchitecture=MSIL">
4442
<HintPath>..\..\packages\BenchmarkDotNet.0.9.5\lib\net45\BenchmarkDotNet.dll</HintPath>
4543
<Private>True</Private>

0 commit comments

Comments
 (0)