views:

519

answers:

5

I have just started using an exception logger (EurekaLog) in my (Delphi) application. Now my application sends me lots of error messages via e-mail every day. Here's what I found out so far

  • lots of duplicate errors
  • multiple mails from the same PC

While this is highly valuable input to improve my application, I am slightly overwhelmed by the sheer amount of information I'm getting.

What are your best practices for handling mails from your application?

+8  A: 

If you get to much information as it is currently the case you are not getting any information at all.

So I would say categorize your errors into groups, like WARNINGS, FATAL ERRORS, etc. Then limit your emails to the most important messages (FATAL). Apart from that review your logs on a regular basis (day, week ...).

Drejc
+1 for the first sentence. So true!
Treb
+1  A: 

It would very much depend on what the errors are that are being sent back. The obvious one being if there are errors in your application, they need fixing and patches/updates sent to your clients.

If they are exceptions that you know can happen and do not required you to be notified you can add "Exception Filters" in the Eureaka Log options to specify how they should be handled (or ignored!).

Another option is to use EurekaLog Variables (where you can add the exception description etc) in the mail Subject line and then use your email client to filter based on this.

Aikislave
+6  A: 

What I've done with my exception logging, which uses madExcept as the core, but my own transport mechanism, is have them all go into a database. The core information is all extracted from each report and put into fields, and the whole report is stored as well. The stack trace is automatically analysed to remove the un-interesting functions, leaving a list of only my functions that have failed.

With this happening automatically, I can now "ignore" each individual message coming in, but see the bigger picture in a grid that shows me simply which functions are having the most problems. I can then focus on them, look for the causes, and fix them.

My display app is also able to filter out reports in builds before a certain number if I choose, so that I can tell it not to include "MyWidget.BadProc" before build 75 once I've fixed it.

This has helped me improve my app, and hit the problems that people found most problematic, without having to guess.

mj2008
We did the same thing with Eureka Log and we've found it to really be the best solution for managing exceptions from a large number of clients (~25,000).
Mick
+1  A: 

I did this using madExcept. It's really useful for tracking down problems we couldn't reproduce ourselves.

Which makes me ask why you are getting so many? Untrapped exceptions should be few and far between. Especially if the user sees an error dialog. I was responsible for several applications, each with hundreds of installs and I would rarely get e-mail notices.

If they are mostly from a very small number of PCs, I'd work with some of those users to find out what they're doing differently, or how their setup might be generating exceptions.

If they are from all over the place, it's probably a bug that got through your testing.

Either way, use the details to fix your code or, at the very least, anticipate known exceptions and trap them properly (no empty try..except).

Fixing the hot spot problems will cut way down on the number of e-mails you get, making the occasional notice much more manageable.

Bruce McGee
A: 

I think that you should throw out all duplicates. Leave only count of the reports. I.e. if you get, say 100 reports, but there are only 4 unique problems - leave only 4 reports, throw out other 96 reports, but use their count to sort reports by severity. For example, 6 reports for fourth problem, 10 reports for third, 20 for second and 60 for first. So, you should fix first problem with 60 reports and only then switch to second.

I believe that EurekaLog has BugID in its reports. Same problem has the same BugID. This will allow you to sort reports with duplicates. EurekaLog Viewer also can sort out duplicates.

Alexander