Breadcrumbs .NET 6+
Breadcrumbs let you provide logging points in your code that will be collected and sent along with any exception sent to Raygun. This lets you have a better understanding of the events that happened in the system that lead up to the exception.
Recording a Breadcrumb
To record a basic breadcrumb with a custom message using the Record(string message)
method.
RaygunBreadcrumbs.Record("Example breadcrumb")
note:
When using the RecordBreadcrumb
method all other properties will be set to defaults.
Customizing Breadcrumb
We provide an overload for Record so that you can pass in your own instance of the RaygunBreadcrumb object.
RaygunBreadcrumbs.Record(new RaygunBreadcrumb()
{
Message = "Breadcrumbs :)",
Type = "navigation",
CustomData = new Dictionary<string, object>() { { "Custom", "Data" } }
});
Information on location automatically gets overwritten with the location of the call from the stack frame.
Breadcrumb Location
The location e.g. line number, method name, class name, are all automatically included inside each breadcrumb. This can help you identify where the breadcrumb was recorded in the event of similar breadcrumb names.
Breadcrumb Types
In the Record overload we can specify the tye of breadcrumb we are recording.
These include the following:
- manual
- click-event
- navigation
- console
- request
These will provide different icons in your breadcrumb trace depending on the type you provided.
By default, the type is manual.
Breadcrumb Storage
There are two storage options offered by us, AsyncLocalBreadcrumbStore
and InMemoryBreadcrumbStore
.
The default store is the AsyncLocalBreadcrumb store where the breadcrumbs are local to the asynchronous context they are invoked in. For ASP .NET Core we have begun an async context at the start of each request so all breadcrumbs in that request are in scope.
InMemoryBreadcrumbStore
is a global context breadcrumb storage. For MAUI this is assigned as the default storage
You can change the storage type yourself by reassigning the storage object.
RaygunBreadcrumbs.Storage = new InMemoryBreadcrumbStorage();
We also provide an interface IRaygunBreadcrumbStorage
which you can use to implement your own store, though this is not required or recommended.
Breadcrumb Differences from .NET Framework
There are two key differences from the Framework implementation of breadcrumbs.
- We do not support breadcrumb levels, they are defaulted to info with no ability to change this.
- Location is not optional, this is always recorded now.