elmah.io

Arhus, Denmark
2013
  |  By Thomas Ardal
JSON files have become part of our daily lives. We use JSON files for all sorts of tasks like settings, defining database schemas, and much more. The other day I found out that invalid JSON files had been pushed to one of our repositories. So, I decided to include JSON file validation as part of our build on Azure DevOps. In this post, I'll share the solution. I'm sure you can think of a scenario where invalid JSON files either do not parse as valid syntax or don't conform to the intended format.
  |  By Thomas Ardal
We have been using Azure Functions for years. Being able to easily deploy and run code on both Azure App Services and real serverless has been a killer feature for all of our asynchronous jobs and services. Unfortunately, the logging approach provided as part of the default template is not ideal. In this post, I'll introduce you to the first steps we take in all of our existing and new function apps to improve logging. A quick note about the Azure Functions runtime.
  |  By Thomas Ardal
While developing the "new" canonical check feature for elmah.io Uptime Monitoring, I had to parse a website from C# and inspect the DOM. I have been using Html Agility Pack in the past so this was an obvious choice. I also looked at what happened in the space and found that AngleSharp is an excellent alternative. In this blog post, I'll showcase both frameworks to help you get started.
  |  By Thomas Ardal
This is the third and final post (for now) in the series about developing email templates with MJML and deploying them to AWS. In the previous post, we developed a Gulp script to automatically build HTML from the MJML file and insert it in a template file for AWS. In this post, we will set up an automated build and deployment of the email template using Azure DevOps. A quick recap.
  |  By Thomas Ardal
This is the second post in the series about building email templates with MJML and deploying them on AWS. In the previous post, we learned about MJML and Handlebars.js for creating cross-browser email templates with dynamic content. In this post, I will show you how you can script the building process of MJML emails and prepare them for upload on AWS. Let's do a quick recap. In the previous post, I created a simple mail template in MJML.
  |  By Thomas Ardal
In the next two posts (maybe more) I'll share how we have developed elmah.io's email templates currently sent out using Amazon Web Services (AWS). This first post will introduce template development using MJML and Handlebars.js. In the next post, I'll explain the process of building them on Azure DevOps and deploying them to AWS.
  |  By Thomas Ardal
Part of implementing an error monitoring platform like elmah.io is dealing with the IP addresses of the clients generating errors. In this post, I'll show you parts of how we have implemented this in ASP.NET Core, to make sure that different hosting scenarios still produce the correct IP address. Let's jump right in. ASP.NET Core supports getting the client IP directly on the HttpContext object available throughout various places.
  |  By Thomas Ardal
We have a couple of internal websites hosted on Azure. Websites that require authentication and should only be accessed from our IP. This can easily be configured using Access Restrictions in Azure. But when doing so, you exclude the dynamic IP range for Microsoft-hosted Azure DevOps build agents. In this post, I'll show you how we set up deployment to the Access Restricted websites with a bit of PowerShell magic.
  |  By Thomas Ardal
For a recent feature, I had to download a batch of files from an internal website written in ASP.NET Core. Zipping the files before downloading them, turned out as a great way of easily implementing multi-file download. .NET offers all of the needed features and in this post, I'll show you how to implement it. To get started, I'll create a new ASP.NET Core website: I'm picking the MVC template, but none of the zip-related code is specific to MVC.
  |  By Thomas Ardal
While developing elmah.io support for WPF, I had the chance to look into WPF for the first time in many years. I couldn't stop myself from digging down into all sorts of details about how logging has evolved in WPF since I last wrote a WPF app. In this post, I'll share some of the findings I made in this rediscovering journey.
  |  By elmah.io
Blazor WASM JS Wrapping in relation to ObjectReferences
  |  By elmah.io
This example shows how to produce Push Notifications with ASP.NET Core.
  |  By elmah.io
An introduction to elmah.io Heartbeats.
  |  By elmah.io
An introduction to how to install elmah.io in your.NET web project.
  |  By elmah.io
Tutorial on how to install elmah.io on a running website on Azure App Services.

elmah.io is the easy error logging and uptime monitoring service for .NET. Take back control of your errors with support for all .NET web and logging frameworks.

Never rely on users to report bugs again:

  • Error Monitoring: With elmah.io Error Monitoring, all errors on your websites are automatically synced to elmah.io’s powerful infrastructure in the cloud. Using a range of different dashboards, it is easy for you to monitor the current state of your applications and react as soon as something breaks down. You can track both a single application as well as get the full picture of all applications, using a range of interesting metrics. Integrations with popular instant messaging and issue tracking systems, reduce the time from introducing an error to deploying a fix in production. Our users tell us that elmah.io helps them introduce fewer errors into their applications.
  • Uptime Monitoring: elmah.io Uptime Monitoring continuously pings your endpoints from up to 5 different regions. When your endpoints start failing, errors are logged in your existing error logs. This means that all of the rules and notifications already set up just work. No need to maintain your team and notification rules in multiple tools. Uptime checks also validate your SSL certificates and domain names, giving you a chance to renew both before users start experiencing errors in their browser.
  • Deployment Tracking: Deployment Tracking gives you a perfect overview of the different versions of your software. New versions of your software are automatically registered by elmah.io. Metrics about the performance of each release are collected immediately. Being able to determine if a new release introduced bugs, will allow for quick fixing or rollback to a previous version. Deployment Tracking supports all of the popular deployment choices on the market, like Azure DevOps and Octopus Deploy.
  • Heartbeats: Heartbeats is for scheduled tasks and services as Uptime Monitoring is for your websites. Add a predefined schedule and publish heartbeats to elmah.io when a scheduled task succeeds, every hour from your Windows Service, and much more. elmah.io automatically monitors your heartbeats. Using the built-in notifications and App Store, your teams are notified as soon as one of your heartbeats is unhealthy or missing.