Instantiate the client with your DSN:
var ravenClient = new RavenClient("http://public:secret@example.com/project-id");
Call out to the client in your catch block:
try
{
int i2 = 0;
int i = 10 / i2;
}
catch (Exception e)
{
ravenClient.CaptureException(e);
}
You can capture a message without being bound by an exception:
ravenClient.CaptureMessage("Hello World!");
You can add additional data to the Exception.Data
property on exceptions thrown about in your solution:
try
{
// ...
}
catch (Exception exception)
{
exception.Data.Add("SomeKey", "SomeValue");
throw;
}
The data SomeKey
and SomeValue
will be captured and presented in the extra
property on Sentry.
Additionally, the capture methods allow you to provide additional data to be sent with your request.
CaptureException
supports both the tags
and extra
properties, and CaptureMessage
additionally
supports the level
property.
The full argument specs are:
string CaptureException(Exception exception,
SentryMessage message = null,
ErrorLevel level = ErrorLevel.Error,
IDictionary<string, string> tags = null,
string[] fingerprint = null,
object extra = null)
string CaptureMessage(SentryMessage message,
ErrorLevel level = ErrorLevel.Info,
IDictionary<string, string> tags = null,
string[] fingerprint = null,
object extra = null)
In the .NET 4.5 build of SharpRaven, there are async
versions of the above methods as well:
Task<string> CaptureExceptionAsync(Exception exception,
SentryMessage message = null,
ErrorLevel level = ErrorLevel.Error,
IDictionary<string, string> tags = null,
string[] fingerprint = null,
object extra = null);
Task<string> CaptureMessageAsync(SentryMessage message,
ErrorLevel level = ErrorLevel.Info,
IDictionary<string, string> tags = null,
string[] fingerprint = null,
object extra = null);
You can install the SharpRaven.Nancy package to capture the HTTP context
in Nancy applications. It will auto-register on the IPipelines.OnError
event, 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 Dsn
class in your container:
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
{
container.Register(new Dsn("http://public:secret@example.com/project-id"));
}
or through configuration:
<configuration>
<configSections>
<section name="sharpRaven" type="SharpRaven.Nancy.NancyConfiguration, SharpRaven.Nancy" />
</configSections>
<sharpRaven>
<dsn value="http://public:secret@example.com/project-id" />
</sharpRaven>
</configuration>
The DSN will be picked up by the auto-registered IRavenClient
instance, so if you want to send events to
Sentry, all you have to do is add a requirement on IRavenClient
in your classes:
public class LoggingModule : NancyModule
{
private readonly IRavenClient ravenClient;
public LoggingModule(IRavenClient ravenClient)
{
this.ravenClient = ravenClient;
}
}
If an exception is raised internally to RavenClient
it is logged to the Console. To extend this behaviour use
the property ErrorOnCapture
:
ravenClient.ErrorOnCapture = exception => {
// custom code here
};
You can clone and build SharpRaven yourself, but for those of us who are happy with prebuilt binaries, there's a NuGet package.
- Code
- Mailing List
- IRC (irc.freenode.net, #sentry)