Wednesday, June 20, 2012

Logging error to text file c#.Net

1. Add new static "ErrorLoging" class to solution and paste the below code in cs file.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Diagnostics;

/// <summary>
/// class contain methode for logging WriteToErrorLogFile_Trace(string)
/// </summary>
public  static class ErrorLoging
{
    /// <summary>
    /// log error to path metion in web.config file for key "ErrorFolderPath".
    /// new file will be created for each day
    /// </summary>
    /// <param name="msg">error msg to log.</param>
    /// <param name="ex">exception object, Pass null to just log some msg.</param>
    public static void WriteToErrorLogFile_Trace(string msg,Exception ex)
    {
        try
        {
            if (!System.IO.Directory.Exists(System.Configuration.ConfigurationManager.AppSettings["ErrorFolderPath"] + "\\Errors\\"))
            {
                System.IO.Directory.CreateDirectory(System.Configuration.ConfigurationManager.AppSettings["ErrorFolderPath"] + "\\Errors\\");
            }
            //if (!System.IO.File.Exists(Application.StartupPath + "\\Errors\\" + DateTime.Today.Date.ToString().Replace('/', ' ').Replace(':', ' ')+".txt"))
            //{
            //    System.IO.File.Create(Application.StartupPath + "\\Errors\\" + DateTime.Today.Date.ToString().Replace('/', ' ').Replace(':', ' ') + ".txt");
            //}



            FileStream fs1 = new FileStream(System.Configuration.ConfigurationManager.AppSettings["ErrorFolderPath"] + "\\Errors\\" + DateTime.Today.Year.ToString() + DateTime.Now.ToString("MM") + DateTime.Now.ToString("dd") + ".txt", FileMode.Append, FileAccess.Write);
            StreamWriter s1 = new StreamWriter(fs1);





            s1.WriteLine("==================" + DateTime.Now.ToString() + "===========================" + System.Environment.NewLine);
            s1.WriteLine(msg + System.Environment.NewLine);

            if (ex != null)
            {
                // Get stack trace for the exception with source file information
                var st = new StackTrace(ex, true);
                // Get the top stack frame
                var frame = st.GetFrame(0);

                s1.WriteLine("Line Number:" + System.Environment.NewLine + frame.GetFileLineNumber() + System.Environment.NewLine);
                s1.WriteLine("File Name:" + System.Environment.NewLine + frame.GetFileName() + System.Environment.NewLine);
                s1.WriteLine("Message:" + System.Environment.NewLine + ex.Message + System.Environment.NewLine);
                s1.WriteLine("Methode:" + System.Environment.NewLine + ex.TargetSite + System.Environment.NewLine);
                s1.WriteLine("Source:" + System.Environment.NewLine + ex.Source + System.Environment.NewLine);
                s1.WriteLine("InnerException:" + System.Environment.NewLine + ex.InnerException + System.Environment.NewLine);
                s1.WriteLine("StackTrace:" + System.Environment.NewLine + ex.StackTrace + System.Environment.NewLine);
            }
            s1.WriteLine("================================================================" + System.Environment.NewLine);



            s1.Close();
            fs1.Close();
        }
        catch (Exception e)
        {

            throw e;
        }



    }
}


2. add follwing key in web.config <appSettings>


<appSettings>
    <add key="ErrorFolderPath" value="d:\ErrorLogFolder"/>
  </appSettings>




3. Add below code on your page/user control cs file


/// <summary>
    /// calls static error log method
    /// </summary>
    /// <param name="msg">specific developer msg for logging</param>
    /// <param name="ex">Exception object</param>
    /// <param name="showUser">true if want to throw exception to user</param>
    public void LogError(string msg, Exception ex,bool showUser)
    {
        ErrorLoging.WriteToErrorLogFile_Trace(msg + System.Environment.NewLine+"Show User:"+showUser, ex);

        if (showUser)
        {
            throw ex;
        }
    }


4. Write below in all your catch
try
{
}
catch(Exception ex)
{
 LogError("error on my code",ex,false);
}






No comments:

Post a Comment

SharePoint document metadata not updating

I faced a weird issue today, Metadata for document which has lookup column was not updating even after saving the item. There was no erro...