IMHO, creo que utilizando el método ToString() de un objeto de tipo Exception, normalemente, es más que suficiente para determinar la causa de un problema.
Dale un vistazo al
Exception Handling Application Block ó
log4net, éstos te permiten implementar "handlers" o "listeners" propios para manejar las excepciones.
Saludos
PS. Sólo por curiosidad, por qué utilizas un webservice para implementar lo que mencionas?