# Rollbar.NET
**Repository Path**: mirrors_lextm/Rollbar.NET
## Basic Information
- **Project Name**: Rollbar.NET
- **Description**: Rollbar for .NET
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-08-09
- **Last Updated**: 2026-02-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Rollbar.NET
A .NET Rollbar Client that is not ASP.NET specific.
## Install
Nuget Package Manager:
Install-Package Rollbar
## Basic Usage
* Initialize Rollbar with `Rollbar.Init(new RollbarConfig("POST_SERVER_ACCESS_TOKEN"))`
* Send errors to Rollbar with `Rollbar.Report(Exception)`
* Send messages to Rollbar with `Rollbar.Report(string)`
## RollbarConfig
The `RollbarConfig` object allows you to configure the Rollbar library.
- AccessToken
- The access token for your project, allows you access to the Rollbar API
- Endpoint
- The Rollbar API endpoint, defaults to https://api.rollbar.com/api/1/
- Environment
- Environment name, e.g. `"production"` or `"development"` defaults to `"production"`
- Enabled
- If set to false, errors will not be sent to Rollbar, defaults to `true`
- LogLevel
- The default level of the messages sent to Rollbar
- Transform
- Allows you to specify a transformation function to modify the payload before it is sent to Rollbar
```csharp
new RollbarConfig
{
Transform = payload =>
{
payload.Data.Person = new Person
{
Id = 123,
Username = "rollbar",
Email = "user@rollbar.com"
};
}
}
```
## Person Data
You can set the current person data with a call to
```csharp
Rollbar.PersonData(() => new Person
{
Id = 123,
Username = "rollbar",
Email = "user@rollbar.com"
});
```
and this person will be attached to all future Rollbar calls.
## Advanced Usage
If you want more control over sending the data to Rollbar, you can fire up a `RollbarClient`
yourself, and make the calls directly. To get started you've got exactly one interesting class
to worry about: `RollbarPayload`. The class and the classes that compose the class cannot be
constructed without all mandatory arguments, and mandatory fields cannot be set.
Therefore, if you can construct a payload then it is valid for the purposes of
sending to Rollbar. To get the JSON to send to Rollbar just call
`RollbarPayload.ToJson` and stick it in the request body.
There are two other *particularly* interesting classes to worry about:
`RollbarData` and `RollbarBody`. `RollbarData` can be filled out as completely
or incompletely as you want, except for the `Environment` ("debug",
"production", "test", etc) and and `RollbarBody` fields. The `RollbarBody` is
where "what you're actually posting to Rollbar" lives. All the other fields on
`RollbarData` answer contextual questions about the bug like "who saw this
error" (`RollbarPerson`), "What HTTP request data can you give me about the
error (if it happened during an HTTP Request, of course)" (`RollbarRequest`),
"How severe was the error?" (`Level`). Anything you see on the
[rollbar api website](https://rollbar.com/docs/api/items_post/) can be found in
`Rollbar.NET`.
`RollbarBody` can be constructed one of 5 ways:
1. With a class extending from `Exception`, which will automatically produce a
`RollbarTrace` object, assigning it to the `Trace` field of the `RollbarBody`.
2. With a class extending from `AggregateException`, which will automatically
produce an array of `RollbarTrace` objects for each inner exception, assigning
it to the `TraceChain` field of `RollbarBody`.
3. With an actual array of `Exception` objects, which will automatically
produce an array of `RollbarTrace` objects for each exception, assigning
it to the `TraceChain` field of `RollbarBody`.
4. With a `RollbarMessage` object, which consists of a string and any
additional keys you wish to send along. It will be assigned to the `Message`
field of `RollbarBody`.
5. With a string, which should be formatted like an iOS crash report. This
library has no way to verify if you've done this correctly, but if you pass in
a string it will be wrapped in a dictionary and assigned to the `"raw"` key and
assigned to the `CrashReport` field of `RollbarBody`
None of the fields on `RollbarBody` are updatable, and all null fields in
`Rollbar.NET` are left off of the final JSON payload.
## Examples
### ASP.Net MVC
To use inside an ASP.Net Application, first in your global.asax.cs and Application_Start method
initialize Rollbar
```csharp
protected void Application_Start()
{
...
Rollbar.Init(new RollbarConfig
{
AccessToken = ConfigurationManager.AppSettings["Rollbar.AccessToken"],
Environment = ConfigurationManager.AppSettings["Rollbar.Environment"]
});
...
}
```
Then create a global action filter
```csharp
public class RollbarExceptionFilter : IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
if (filterContext.ExceptionHandled)
return;
Rollbar.Report(filterContext.Exception);
}
}
```
and finally add it to the global filters collection
```csharp
private static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
...
filters.Add(new RollbarExceptionFilter());
}
```
### Winforms
To use inside a Winforms Application, do the following inside your main method:
```csharp
[STAThread]
static void Main()
{
Rollbar.Init(new RollbarConfig
{
AccessToken = "POST_SERVER_ACCESS_TOKEN",
Environment = "production"
});
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.ThreadException += (sender, args) =>
{
Rollbar.Report(args.Exception);
};
AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
{
Rollbar.Report(args.ExceptionObject as System.Exception);
};
Application.Run(new Form1());
}
```