I've been quite silent about ElmahR on my blog lately, but that was just because I was taking some more rest than I usually do, I needed it :) This does not mean I did not do anything on the project, actually I added at least 3 interesting new features.
Errors persitence has always been intended as something important, but in a way less crucial that the error notifications. I never wanted to have failures during persistence get into the way of notifications, causing hiccups on that side. In order to achieve that I already introduced improvements in the past about how I was handling error happening inside ElmahR itself, but that was not the only way persistence could interfere with notifications. The other way was because persistence was happening synchronously with notification, and that could cause some issues. Now persistence happens asynchronously, letting notifications go out as fast as possible.
Errors persistence has always been an isolated piece, and it was possible to replace it with different implementations, but there were not many options. I had an "in memory" implementation, which was there mostly for development reasons and could no really be considered trustworthy, and the "official" one based on Entity Framework. I already talked about why I choose EF, and in general this was because it allowed me to easily and quickly cover persistence over relational databases. But it's true that ElmahR persistence suits pretty well to the usage of document-oriented databases, so as a proof of concept I build a MongDB persistor. If you use Mongo you are good to go and persist your errors there, while if you use a different "NoSql" database you will find the MongoDBPersistor implementation quite useful to build your own for your target (and you might want to contribute it back when done ;) ). An implementation for RavenDB is on its way thanks to @gsuttie.
Error post encryption
Reacting to an interesting comment by I received on CodeProject, I added optional encryption when the ErrorPostModule sends errors info to a dashboard. Now you can specify a shared secret on both the monitored application and the receiving dashboard, if you do so messages will be encrypted. To do so is as easy as doing the 2 following things:
- adding a
secretattribute inside your
errorPostsection from the
web.configof your monitored application
- adding a corresponding
secretattribute inside the matching
applicationsection from the
web.configof your dashboard
Of course both attributes will have the same value specified. The Nuget package for the ElmahR.Elmah module has been updated to reflect this addition.
SignalR has gone 1.0 alpha
One last short thing about the fact that SignalR has reached the 1.0 alpha state, and it will be released as an official ASP.NET piece in the next ASP.NET Fall Update. I already started keeping an eye on it, as soon as it will be in a stable and complete status ElmahR will be updated accordingly.