The NuGet package landscape

A more recent version of this overview is available here: NuGet packages revisited

We are in the process of building prereleases of all of the client integrations. While doing so, it has come to my attention, that a good overview of all of the packages doesn't really exist. Let's start by looking at a diagram showing all of the NuGet packages and their dependencies: NuGet packages

From the bottom up:


Every messages logged on goes through our API. Elmah.Io.Client is a partially auto-generated package for talking with the API. Besides a 1:1 mapping of the API, Elmah.Io.Client also contains a logging API known from logging frameworks like Serilog and log4net. The logging API allows for logging everything from Verbose to Fatal messages.

As illustrated on the diagram, all other client integrations uses Elmah.Io.Client to talk to the API. If you want to create an integration for, this is the package to depend.

The package, contains our integration for ELMAH. If you want to add logging of all uncaught errors in your ASP.NET (classic, MVC and Web API) application, this is your package of choice.

While contains the actual implementation for ELMAH, is a convenience package. No code is included in this package but in real life, you will start by installing this package anyway. The package contains config transformations, as well our PowerShell installer (the dialog you see when installing, asking for your log ID). Once installed, you can safely remove this package, leaving and Elmah.Io.Client as the packages handling everything.


Much like the package, Elmah.Io.Mvc act as an easy installer when using from ASP.NET MVC.


Same story as Elmah.Io.Mvc just for ASP.NET Web API.

We love Umbraco and believe it's the best .NET CMS out there. Our native support for Umbraco, contains everything needed to log uncaught exceptions (by depending, as well as hooking into Umbraco's own logging feature (using


When releasing ASP.NET Core, Microsoft also made a new logging framework available called Microsoft.Extensions.Logging. As sexy as that name sounds (?), it's a good logging framework, inspired by similar community driven projects. In fact, Microsoft.Extensions.Logging can act as a simple proxy for other logging frameworks and that it exactly how you'd use it with Using the Elmah.Io.Extensions.Logging package, you can send everything from Verbose to Fatal log statements from any .NET Core application to


Elmah.Io.AspNetCore is out implementation for ASP.NET Core. Using middleware, all uncaught exceptions in your ASP.NET Core application, are send to If ELMAH is ever ported to ASP.NET Core, we may discontinue this package. For now, this is the package for integrating ASP.NET Core with


Logary is a logging framework for .NET, written entirely in F#. Our integration for Logary, makes it possible to log different types of messages in, through Logary.

A simple .NET trace listener, sending trace messages from the Trace class in .NET to

Log target for the popular .NET logging framework NLog.

Appender for the oldest .NET logging framework on the block: log4net. While log4net may not be the new shiny thing, it's still the most commonly used logging framework. We have excellent support for log4net.


Serilog is a very popular logging framework, that has gained a lot of traction and attention during the last years. We use Serilog ourselves, to log messages from all of the components inside Using this package, logging error messages (as well as debug, information etc.) through Serilog, is easy as 1-2-3.


Since writing this post the Serilog.Sinks.ElmahIo.AspNet package has been removed.

While Serilog.Sinks.ElmahIo is a great choice for most logging needs, you may want additional information stored, when logging from a web application. The Serilog.Sinks.ElmahIo.AspNet package, logs a lot of information from the HTTP context as well, when logging messages through Serilog. If you are using Serilog from a web application, this package is the better choice. Error logging and Uptime Monitoring for your web apps

This blog post is brought to you by is error logging, uptime monitoring, deployment tracking, and service heartbeats for your .NET and JavaScript applications. Stop relying on your users to notify you when something is wrong or dig through hundreds of megabytes of log files spread across servers. With, we store all of your log messages, notify you through popular channels like email, Slack, and Microsoft Teams, and help you fix errors fast.

See how we can help you monitor your website for crashes Monitor your website