Here is something I wrote for use in pretty much every application I use. It's an error logging class which logs all errors in a strongly typed XML file. It is version 1.0 as it were, and version 2.0 is currently in the pipe... It is fully commented (XML Comments), and is fairly self explanatory. It is of course written in C#.
This class is used for logging most types of System.Exception except for the following:
Because I thought they were unlikely. Also includes SqlException(System.Data. SqlClient.- SqlException) which will insert as many errors as are necessary [it basically iterates the .errors collection]. Each call includes two free form strings of unlimited length (because it's a dataset) this allows you to add any two extra strings of whatever data to your error log - e.g. what userid caused the error, or what data they had submitted to the routine to cause the error - it's up to you, or leave them blank.
Does not deal with inner exceptions - wait until version 2..