Skip to content

uber-rob/raven-csharp

 
 

Repository files navigation

Usage

Instantiate the client with your DSN:

var ravenClient = new RavenClient("http://public:secret@example.com/project-id");

Capturing Exceptions

Call out to the client in your catch block:

try
{
    int i2 = 0;
    int i = 10 / i2;
}
catch (Exception e)
{
    ravenClient.CaptureException(e);
}

Logging Non-Exceptions

You can capture a message without being bound by an exception:

ravenClient.CaptureMessage("Hello World!");

Additional Data

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)

Async Support

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);

Nancy Support

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;
    }
}

Debugging SharpRaven

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
};

Get it!

You can clone and build SharpRaven yourself, but for those of us who are happy with prebuilt binaries, there's a NuGet package.

Resources

About

Raven is a C# client for Sentry

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 99.2%
  • Other 0.8%