-
-
Notifications
You must be signed in to change notification settings - Fork 142
Adding Plugins
A plugin is a client-side addin that is run every time you submit an event.
Specify a System.Action<EventPluginContext>
or create a class that derives from IEventPlugin to create a plugin.
Every plugin is passed an EventPluginContext, which contains all the valuable contextual information that your plugin may need via the following properties:
- Client
- Event
- ContextData
- Log
- Resolver
using System;
using System.Diagnostics;
using Exceptionless.Plugins;
using Exceptionless.Models;
namespace Exceptionless.SampleConsole.Plugins {
[Priority(100)]
public class SystemUptimePlugin : IEventPlugin {
public void Run(EventPluginContext context) {
// Only update feature usage events.
if (context.Event.Type != Event.KnownTypes.FeatureUsage)
return;
// Get the system uptime
using (var pc = new PerformanceCounter("System", "System Up Time")) {
pc.NextValue();
var uptime = TimeSpan.FromSeconds(pc.NextValue());
// Store the system uptime as an extended property.
context.Event.SetProperty("System Uptime", String.Format("{0} Days {1} Hours {2} Minutes {3} Seconds", uptime.Days, uptime.Hours, uptime.Minutes, uptime.Seconds));
}
}
}
}
The plugin priority determines the order the plugin runs (lowest to highest, then by order added). All plugins shipped with the client have a starting priority of 10 and increment by multiples of 10. For your addin to run first, give it a priority lower than 10 (e.g., 0-5). To have it run last, give it a priority higher than 100. If a priority is not specified, it defaults to 0.
Start by calling one of the Exceptionless.ExceptionlessClient.Default.Configuration.AddPlugin()
overloads. This will typically be the following:
using Exceptionless;
ExceptionlessClient.Default.Configuration.AddPlugin<SystemUptimePlugin>();
Passing a System.Action<EventPluginContext>
to AddPlugin can also be used to add a plugin. Note we specify a key so we can remove the plugin later. If you won't be removing the plugin, you can omit the first argument.
AddPlugin is passed three arguments:
- Unique Plugin Key (to remove later, if applicable)
- Priority
- Action (logic)
using Exceptionless;
ExceptionlessClient.Default.Configuration.AddPlugin("system-uptime", 100, context => {
// Only update feature usage events.
if (context.Event.Type != Event.KnownTypes.FeatureUsage)
return;
// Get the system uptime
using (var pc = new PerformanceCounter("System", "System Up Time")) {
pc.NextValue();
var uptime = TimeSpan.FromSeconds(pc.NextValue());
// Store the system uptime as an extended property.
context.Event.SetProperty("System Uptime", String.Format("{0} Days {1} Hours {2} Minutes {3} Seconds", uptime.Days, uptime.Hours, uptime.Minutes, uptime.Seconds));
}
});
Call one of the Exceptionless.ExceptionlessClient.Default.Configuration.RemovePlugin
overloads to remove a plugin.
using Exceptionless;
ExceptionlessClient.Default.Configuration.RemovePlugin<SystemUptimePlugin>();
If it was registered via an action, you have to remove it via the key you added it with.
using Exceptionless;
ExceptionlessClient.Default.Configuration.RemovePlugin("system-uptime");
Looking for General Exceptionless Documentation, UI Documentation, or Documentation for another Client?
Visit the Primary Exceptionless Documentation Page and go from there.