elmah.io Technology Stack

This post didn't age well. Almost all of the technologies on this list has been replaced with more modern options. If anyone is still interested in knowing about these details, please make sure to reach out and I'll write an updated post. For now, this post is here for historic reasons only.

We often get this question:

Which technologies, tools and frameworks do you use to develop and host elmah.io?

We already revealed some of the "secrets" in the post Danish service provides maximum scaling and secures data on Azure. This post is a thorough walkthrough of the technologies in play in order to keep the elmah.io engine running.

Windows Azure

elmah.io runs entirely on Windows Azure. We use a combination of web apps, virtual machines, service bus and storage to host everything in the cloud.


elmah.io is pretty much a single page application. All of the static HTML seen in the UI is served by ASP.NET MVC. We actually started out with simple HTML files, but quickly found out that MVC offers so much more than Razor (which we don't use).


Both our internal API for feeding the UI, as well as our public API are hosted by ASP.NET Web API. Web API may not be the coolest kid on the block, but it works great and actually got some nice features from v2.


If you ever wondered how elmah.io is able to provide instant search results when executing full text queries from the UI, Elasticsearch is the answer. This perfect NoSQL database is the foundation for most of the data access on elmah.io.


Everyone needs caching in order to provide a responsive product. Redis has turned out as the perfect choice for not only cache DB data, but also persist temporary statistics about which mails have been send etc.

Visual Studio

Couldn't really develop without it. Everything from the website to all of the backend code is developed in Visual Studio.


We'd love to tell you that we type fast enough to code without ReSharper. Unfortunately this is not that case. ReSharper provides us with so many nice features to speed up development time.


Developing a product in 2015 without a build server is wack. We use TeamCity to build and test our internal code. For the open source parts of elmah.io, we use a combination of TeamCity provided by CodeBetter and Appveyor.


One of the goals for elmah.io, is to be able to work as a cloud logging platform for ... well elmah.io. We eat our own dog food and use all of the features in elmah.io ourselves. In parallel, we use Serilog and Elasticsearch to log a copy of all messages. If elmah.io goes down, we always have an external log telling us what went wrong.


We send a lot of transactional mails. Various features for sending emails from elmah.io are available and for that we use Mandrill. Mandrill provides some nice templating features that we blogged about as well: Sending transactional emails using Mandrill and .NET.

New Relic

We want to provide the best performing .NET cloud logging platform out there. To keep an eye on performance and to debug when something starts performing poorly, we monitor every web request with New Relic.


We wouldn't be anywhere if we weren't able to accept payments from our users. Paymill handles all of our transactions.


We recently switched from Wordpress to MkDocs on all of our static stuff like documentation and blog. MkDocs is a nice little documentation tool written in Python. Every article and blog post are now written in Markdown and available on GitHub.


Besides all of the larger products and SaaS services, we use a large range of .NET frameworks for implementing and testing the various elmah.io features. NUnit, Moq and Autofixture for unit testing. Autofac for dependency injection. A range of client side libraries for building the crisp elmah.io UI like Knockout, Bootstrap, jQuery and d3. For integrating with social providers, we use SimpleAuthentication, a lightweight framework for hooking up with Facebook etc. Topshelf runs a bunch of Windows Services, hosting different consumers of our service bus, sending out emails etc.

elmah.io: Error logging and Uptime Monitoring for your web apps

This blog post is brought to you by elmah.io. elmah.io 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 elmah.io, 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