The elmah.io NuGet package landscape
A more recent version of this overview is available here: elmah.io NuGet packages revisited
We are in the process of building prereleases of all of the elmah.io 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 elmah.io NuGet packages and their dependencies:
From the bottom up:
Every messages logged on elmah.io 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 elmah.io, this is the package to depend.
elmah.io.core 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.
elmah.io.core contains the actual implementation for ELMAH,
elmah.io 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
Elmah.Io.Client as the packages handling everything.
Much like the
Elmah.Io.Mvc act as an easy installer when using elmah.io 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
elmah.io.core), 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 elmah.io. 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.
Elmah.Io.AspNetCore is out implementation for ASP.NET Core. Using middleware, all uncaught exceptions in your ASP.NET Core application, are send to elmah.io. 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 elmah.io.
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 elmah.io, through Logary.
A simple .NET trace listener, sending trace messages from the
Trace class in .NET to elmah.io.
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 elmah.io. Using this package, logging error messages (as well as debug, information etc.) through Serilog, is easy as 1-2-3.
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.
elmah.io: Error logging and Uptime Monitoring for your web apps