The new Health Monitoring framwork in ASP.NET 2.0 is very cool. Besides that ASP.NET itself uses it to emit all kinds of useful status information, you can build your own WebException classes and connect them via configuration to the EventLog, WMI, Emails a.s.o.
I am particularly impressed with the information that ASP.NET puts in there by default (in addition to whatever custom info you pass on to the the Exception).
An example of an WebException in the EventLog (special attention to process and thread information and security contexts as well as trust level). nice
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 08.05.2005 23:11:19
Event time (UTC): 08.05.2005 21:11:19
Event ID: ca4ed555706c471dbad976bc5a49dead
Event sequence: 201
Event occurrence: 2
Event detail code: 0
Application information:
Application domain: 9b5eb6a8-1-127600601395677296
Trust level: Full
Application Virtual Path: /TestApp
Application Path: C:…
Machine name: DBDEMO
Process information:
Process ID: 1848
Process name: WebDev.WebServer.EXE
Account name: LEASTPRIVILEGEdbaier
Exception information:
Exception type: Exception
Exception message: Something terrible happened.
Request information:
Request URL: http://localhost/TestApp/Test.aspx
Request path: /TestApp/Test.aspx
User host address: 127.0.0.1
User: LEASTPRIVILEGEdbaier
Is authenticated: True
Authentication Type: NTLM
Thread account name: LEASTPRIVILEGEdbaier
Thread information:
Thread ID: 4
Thread account name: LEASTPRIVILEGEdbaier
Is impersonating: True
Stack trace: …