There are quite a few things I am considering:
- I will have to check for
null
values - I will have serious trouble persisting it in the database.
How do I improve this or re-factor this for better results?
public class ErrorLog
{
public static void LogError(Exception e)
{
var exceptionLog = new Dictionary<String, String>
{
{"Inner Exception", e.InnerException.Message},
{"Message", e.Message},
{"Source", e.Source},
{"StackTrace", e.StackTrace},
{"MethodName",e.TargetSite.Name}
};
foreach (KeyValuePair<String, String> kvp in e.Data)
exceptionLog.Add(kvp.Key, kvp.Value);
}
}
Update with the new and simpler class
public class ErrorLog
{
public static void LogError(Exception e)
{
var innerExcpetionMessage = e.InnerException == null ? "Null" : e.InnerException.Message;
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
var cmd = new SqlCommand("ApplicationErrorLog", connection) { CommandType = System.Data.CommandType.StoredProcedure };
cmd.Parameters.AddWithValue("@Type", e.GetType().Name);
cmd.Parameters.AddWithValue("@InnerException", innerExcpetionMessage);
cmd.Parameters.AddWithValue("@Message", e.Message);
cmd.Parameters.AddWithValue("@Source", e.Source);
cmd.Parameters.AddWithValue("@StackTrace", e.StackTrace);
cmd.Parameters.AddWithValue("@MethodName", e.TargetSite.Name);
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();
}
}
}
}
Now what if there is an error in updating this log, how will I log that?