You’re doing it wrong – error logging

Some developers throw error logging into their applications simply because they feel they should. Almost like an obligation, as if by doing it they can add a tick to a check list somewhere and give themselves a pat on the back- go me! If this is your approach, then you might as well not bother – you’re doing it wrong.

Logging errors means nothing without having put some thought into what you plan to do with them. Whether they’re going to be delivered to your inbox, or written to a log file or database, you need to think about your strategy for dealing with them when they occur, and whether you plan to be proactive or reactive.

Emailing errors/exceptions is one of the more commonly used approaches for a proactive strategy. However it’s important to make sure that only the important “must fix” errors get sent out – sending every minor warning can lead to the recipient simply learning to ignore the noise, by adding a filter or simply switching off and becoming numb to the sea of errors and treating them as “normal”.

Thinking about your proactive strategy should force you to think about things which might occur where you’d want to know before the customer - the call to action should be clear – “we’ll want to look at this before our phone rings”. If you’re finding yourself flicking through error emails and continually not doing anything about their contents then you should revise your strategy accordingly.

We recently inherited a codebase which was diligently emailing errors - to the tune of around 30-50 a day. That’s simply too many to do anything meaningful with, and it quite clearly shows that either you have a serious problem with your application or with your error logging. As a result, that level of error mails was considered a baseline level of “normal” by the developers and the client, and was ignored just like the boy who cried wolf. 90% of what was being sent each day was due to a common and fixable issue which had never been addressed, meaning the remaining 10% which may have been worth looking into was hidden by a shroud of noise.

A reactive strategy is easier. Simply ensure you’re logging at a level which is going to allow you to work back and find out what was going on when you get that call/email from a customer. Presenting the user with an error ID from your application’s error page which references the logged entry when an error occurs is one way to achieve this.

Most strategies will involve a mix of being proactive and reactive. Email out the errors with high/fatal severities, and record the rest in case they’re needed. You can add proactive procedures to reactive logging by performing weekly/monthly reporting on your error logs - checking for your top recurring errors, and fixing them if possible.

All logging approaches should let you configure different severity levels for your events – for example, if you’re using log4net then you might like to read this post for some ideas. Make sure you use this in a way which is going to help you spend your time paying attention to things which need it, rather than letting important errors get lost in a sea of spam.

Next time you’re adding error logging to an application, stop for a minute and think about your strategy first – somewhere, someone’s inbox, and maybe even a customer may be very thankful.

Tags:

 Print | Posted on Saturday, September 11, 2010 1:50 PM |



Feedback

No comments posted yet.


Post Comment

Title  
Name  
Email
Website / Url
 

Your comment

   
Ensure the word in this box says 'orange':
 
Please add 3 and 3 and type the answer here:





Due to excessive comment spam, all comments are now being moderated. If you're a comment spammer then you're wasting your time here. Your comments will not be published - ever.


About me

My name is Ross Hawkins and I'm a developer, consultant, business owner and writer based in Auckland, New Zealand (pictured below!). My current work revolves around ASP.NET, C#, jQuery, Ajax, SQL Server, and a mix of other Microsoft development technologies.

I also have about 15 years of experience with IBM Lotus Notes/Domino and associated technologies. While Notes/Domino is no longer my primary focus I still like to dabble and keep my skills up to date.

I own and run 2 businesses - Hawkins Consulting Services, and Ignition Development.

Bethells Beach, located in sunny West Auckland, New Zealand




Subscribe

Subscribe to this feed


Search




Popular Content

Troubleshooting WebResource.axd

The .NET 2.0 framework changed the way clientside JavaScript is delivered to the browser. Previously, ASP.NET 1.1 used the aspnet_client directory whereas now 2.0 uses WebResource.axd.

Published on October 8, 2006

jQuery Wildcard Selectors - some simple examples

I wrote about jQuery wildcard selector syntax briefly back in 2009, and since then that post has received a lot of views – way more than a post that brief should ever have seen..

Published on October 14, 2011

Microsoft AJAX Extensions: Sys.Debug is null or not an object

One of the breaking changes which was made with the 1.0 release of the Microsoft Ajax Extensions was the renaming of the 'Debug' class to 'Sys.Debug' for reasons of compatiability with other frameworks. Breaking changes like this can often be a source of frustration..

Published on May 22, 2007

Simple ASP.NET Character Counter

A textbox character counter is a pretty simple piece of functionality, and there's a lot of different ways to apply one to your application. The following method is nice and simple, and can be done using only clientside JavaScript if required, or combined with server side code in order to create a more dynamic effect

Published on December 4, 2006

Simple ASP.NET Character Counter - with Master Page Support

A quick update to my previous character counter article adding some changes for those using it with Master Pages.

Published on February 7th, 2009

Adding Tooltips to Gridview Headers

As the title says, this is a very simple but dynamic way of achieving tooltip text on a header column. It's not overly flash, but it's lightweight and quick to implement.

Published on April 15, 2007

SQL Server Web Report Viewer Issues on Windows 2008 Server/IIS7

A fix for another AXD related issue, this time with the SQL Server Web Report Viewer Control which was being served up via IIS7 on a Windows 2008 server.

Published on June 2, 2007
Updated on April 10, 2008





Archives

May, 2012 (1)
April, 2012 (4)
March, 2012 (2)
February, 2012 (4)
January, 2012 (3)
December, 2011 (3)
November, 2011 (8)
October, 2011 (9)
September, 2011 (8)
August, 2011 (5)
July, 2011 (4)
June, 2011 (7)
May, 2011 (5)
April, 2011 (3)
March, 2011 (8)
February, 2011 (4)
January, 2011 (3)
December, 2010 (8)
November, 2010 (5)
October, 2010 (6)
September, 2010 (7)
August, 2010 (11)
July, 2010 (12)
June, 2010 (8)
May, 2010 (8)
April, 2010 (4)
March, 2010 (8)
February, 2010 (6)
January, 2010 (12)
December, 2009 (13)
November, 2009 (11)
October, 2009 (12)
September, 2009 (12)
August, 2009 (2)
July, 2009 (7)
June, 2009 (12)
May, 2009 (9)
April, 2009 (9)
March, 2009 (9)
February, 2009 (8)
January, 2009 (7)
December, 2008 (6)
November, 2008 (7)
October, 2008 (9)
September, 2008 (12)
August, 2008 (9)
July, 2008 (6)
June, 2008 (24)
May, 2008 (13)
April, 2008 (16)
March, 2008 (8)
February, 2008 (10)
January, 2008 (1)
December, 2007 (14)
November, 2007 (11)
October, 2007 (11)
September, 2007 (13)
August, 2007 (11)
July, 2007 (5)
June, 2007 (15)
May, 2007 (11)
April, 2007 (9)
March, 2007 (9)
February, 2007 (10)
January, 2007 (8)
December, 2006 (18)
November, 2006 (11)
October, 2006 (14)
September, 2006 (9)
August, 2006 (10)
July, 2006 (4)
June, 2006 (4)
May, 2006 (6)
April, 2006 (3)
February, 2006 (6)
January, 2006 (10)
September, 2005 (2)
August, 2005 (4)

Post Categories

ASP.NET
AJAX
Amusing
NZ
NZ Trains
Notes/Domino
Visual Studio
Web Development
Miscellaneous
Me
Rugby
C#
SQL