Superseded by: https://github.com/getsentry/sentry-dotnet
Sentry is unifying the API across all SDKs. With that, a new .NET SDK was created.
This SDK is still recommended for .NET Framework 3.5 to 4.6.0.
For .NET Framework 4.6.1, .NET Core 2.0, Mono 5.4 or higher please use the new SDK.
| | Stable | Pre-release |
| -------------------: | :----------------------------: | :------------------: |
| GitHub | | - |
| SharpRaven |
|
|
| SharpRaven.Nancy |
|
|
| Travis Build |
|
|
| AppVeyor Build |
|
|
Instantiate the client with your 'Data Source Name' (DSN):
var ravenClient = new RavenClient("https://[email protected]/project-id");
Call out to the client in your catch block:
try { int i2 = 0; int i = 10 / i2; } catch (Exception exception) { ravenClient.Capture(new SentryEvent(exception)); }
You can capture a message without being bound by an exception:
ravenClient.Capture(new SentryEvent("Hello World!"));
You can add additional data to the
Exception.Dataproperty on exceptions thrown about in your solution:
try { // ... } catch (Exception exception) { exception.Data.Add("SomeKey", "SomeValue"); throw; }
The data
SomeKeyand
SomeValuewill be captured and presented in the
extraproperty on Sentry.
Additionally, the
SentryEventclass allow you to provide extra data to be sent with your request, such as
ErrorLevel,
Fingerprint, a custom
Messageand
Tags.
In the .NET 4.5 or later build of SharpRaven, there's an
asyncversion of the
Capturemethod as well:
async Task CaptureAsync(SentryEvent @event);
You can install the SharpRaven.Nancy package to capture the HTTP context in Nancy applications. It will auto-register on the
IPipelines.OnErrorevent, so all unhandled exceptions will be sent to Sentry.
The only thing you have to do is provide a DSN, either by registering an instance of the
Dsnclass in your container:
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) { container.Register(new Dsn("https://[email protected]/project-id")); }
or through configuration:
The DSN will be picked up by the auto-registered
IRavenClientinstance, so if you want to send events to Sentry, all you have to do is add a requirement on
IRavenClientin your classes:
public class LoggingModule : NancyModule { private readonly IRavenClient ravenClient;public LoggingModule(IRavenClient ravenClient) { this.ravenClient = ravenClient; }
}
If an exception is raised internally to
RavenClientit is logged to the
Console. To extend this behaviour use the property
ErrorOnCapture:
ravenClient.ErrorOnCapture = exception => { // Custom code here };
You can also hook into the
BeforeSendfunction to inspect or manipulate the data being sent to Sentry before it is sent:
ravenClient.BeforeSend = requester => { // Here you can log data from the requester // or replace it entirely if you want. return requester; };
You can clone and build SharpRaven yourself, but for those of us who are happy with prebuilt binaries, there's NuGet packages of both SharpRaven and SharpRaven.Nancy.
#sentryon
irc.freenode.net)