I am looking for a better solution than what we currently have to deal with unexpected production errors, without reinventing the wheel.
A larger number of our products are WinForm and WPF applications that are installed at remote sites. Inevitably unexpected errors occur, from NullReferenceExceptions to 'General network errors'. Thus ranging from programmer errors to environment problems.
Currently all these unhandled exceptions are logged using log4net and then emailed back to us for analysis. However we found that sometimes these error 'reports' contain too little information to identify the problem.
In these reports we need information such as:
- Application name
- Application Version
- Workstation
- Maybe a screen shot
- Exception details
- Operating system
- Available RAM
- Running processes
- And so on...
I don't really want to re-invent the wheel by developing this from scratch. Components that are required:
- Error collection (details as mentioned above)
- Error 'sender' (Queuing required if DB or Internet is unavailable)
- Error database
- Analysis and reporting of these errors. E.g. 10 most frequent errors or timeouts occur between 4:00PM and 5:00PM. How do the errors compare between version x and y?
Note: We looked at SmartAssembly as a possible solution but although close it didn't quite met our needs and I was hoping to hear what other developers do and if some alternatives exist.
Edit: Thanks for the answers so far. Maybe I wasn't clear in my original question, the problem is not how to catch all unhanded exceptions but rather how to deal with them and to create a reporting engine (analysis) around them.