What we do and how

codeRR injects itself into most of the major .NET libraries allowing it to pick up all exceptions and include context information automatically.

Installation

codeRR only requires a nuget-package and a couple lines of code to get started. The code is typically added in your startup class (startup.cs/program.cs/global.asax).

The analysis and error management is done in the codeRR server. Currently there are two options. An Open source version, codeRR Community Server, which is licensed under AGPL. There is also a hosted service, codeRR Live, which has a commercial license.

// The only required code
// second line differs depending on your application type
codeRR.Configuration.Credentials(oteUrl, appKey, sharedSecret);
codeRR.Configuration.CatchMvcExceptions();

Detection

codeRR detects all unhandled exceptions in your application. You can also report exceptions manually.

Once an exception is reported, codeRR sends the exception through the codeRR client pipeline to collect context information from your application, the environment and the operating system.

Finally the generated error report is queued (for instance if the internet connection is down) and uploaded to the server.

The collected context data varies between the client libraries.

Manual reporting

Sometimes you have thrown in a couple of throw statements in your code, even though you should let the top layer deal with the exceptions.That doesn't matter, we can help either way.

If you log exceptions you can use our log4net client library to automatically report the exception through log4net. Compares to a log file, we only create one report, no matter if the same exception is logged 1 or 100 times in the log.

However, for exceptions that are catched but not logged you can use the codeRR.Report() method to report the exception and let codeRR collect context information.

 

Code

try
{
    callSomeMethod(uid, post);
}
catch (Exception ex)
{
    codeRR.Report(ex, new{ UserId = uid, ForumPost = post });
}

Result

The context collection that was generated from the anonymous object

Analysis

We've only received reports for existing errors and got a spike in one of our systems, dbserver problem?

Once the error is uploaded to the codeRR Server the system will start with an duplicate analysis. If the new error report is for the same exception as a previous report, they are both added to the same incident. In other words you do not have to analyse or process multiple reports that originate from the same deficiency in your code.

We also do a number of other analysis. For instance we search for similarities in all reports for the same incident, so that you don't have to say "It works on my machine". We also have an integration with StackOverflow.com, to allow you to quickly find a solution if someone else have had the same exception.

Top of the dashboard for a specific incident, a list of all reports for this incident is just below in the real site. Click on tag do search for a solution in StackOverflow.com

What is it worth to start correcting issues faster?

You can get a notification seconds after a new unique error is detected. Start correcting issues before too many users experience the same error.

What is reduced consequential costs worth?


Cost saving quality

Finding bugs earlier (in your test environment instead of in production) means that you can spend more time on delivering new features instead of analyzing bugs in production.

More satisfied customers

If users feel engaged and not forgotten when they get an error, they are less prone to contact the support department.

What is reduced load on the support department worth?

What is less negative reviews in social media worth?