A common headache
for all developers is how to handle errors? Sometimes it's very
difficult to find where the errors comes. So, Better solution is write custom log files.
Here I am sharing my custom handling techniques.
My
custom log files highlights are:
- It stores all our logs in the specified folder with the log file name? We just have to give the log file path in the web.config file
- Will get the classname, methodname, logged username and exception name for each generated log file.
- Log files are stored with log file generated date/time. Here is my custom log file code:
public static class ErrorHandeling { #region Private variables private static StreamWriter writerForErrLog; #endregion #region Log file names public const string Custom_LOGFILE_NAME = "CustomLogFile"; public const string Custom_LOGFOLDER_NAME = "CustomErrorLOGS"; #endregion #region HandleException ////// FUNCTION : HandleException /// PURPOSE : To create a log file to log the exceptions /// PARAMETERS : strWeb -> current web /// strMethod -> A string containing the list name /// strClass -> A string containing the name of class /// strUser -> A string containing user name /// RETURNS : None /// ---------------------------------------------------------------------- /// public static void HandleException(Exception ex, string strWeb, string strMethod, string strClass, string strUser) { try { SPSecurity.RunWithElevatedPrivileges(delegate() { string strDirPath = System.Configuration.ConfigurationSettings.AppSettings["LogFilePath"]; string strErrLogFilePath = System.Configuration.ConfigurationSettings.AppSettings["LogFilePath"] + "\\" + Custom_LOGFOLDER_NAME + "\\"; strErrLogFilePath += Custom_LOGFILE_NAME + "_" + DateTime.Now.Ticks.ToString() + ".log"; if (!System.IO.File.Exists(strErrLogFilePath)) { DirectoryInfo dirInfo = new DirectoryInfo(strDirPath); dirInfo.CreateSubdirectory(Custom_LOGFOLDER_NAME); } //Creation of log file for execution entries //------------------------------------------ writerForErrLog = new System.IO.StreamWriter(strErrLogFilePath); if (File.Exists(strErrLogFilePath)) { writerForErrLog.WriteLine ("Web: " + strWeb + Environment.NewLine); writerForErrLog.WriteLine ("Method: " + strMethod + Environment.NewLine); writerForErrLog.WriteLine ("Class: " + strClass + Environment.NewLine); writerForErrLog.WriteLine ("User: " + strUser + Environment.NewLine); writerForErrLog.WriteLine ("Date: " + System.DateTime.Now + Environment.NewLine); writerForErrLog.WriteLine ("Message : " + ex.Message + Environment.NewLine); writerForErrLog.WriteLine ("Description : " + ex.StackTrace + Environment.NewLine); writerForErrLog.WriteLine("*****END****"); writerForErrLog.Close(); } }); } catch (Exception exLog) { writerForErrLog.Close(); } } } }
See below code how to use the log file
in each method:
Public static void MethodName() { try { //Code } catch (Exception ex) { ErrorHandeling.HandleException(ex, currentWeb.Url.ToString(), "MethodName", "Classname", currentWeb.CurrentUser.Name.ToString()); }Happy Coding...
Nice!!
ReplyDelete