33
public DataTable InsertItemDetails(FeedRetailPL objFeedRetPL)
{
    DataTable GetListID = new DataTable();
    try
    {
        SqlParameter[] arParams = new SqlParameter[4];

        arParams[0] = new SqlParameter("@Date", typeof(DateTime));
        arParams[0].Value = objFeedRetPL.requestdate;

    }
    catch (Exception ex)
    {
        string dir = @"C:\Error.txt";  // folder location
        if (!Directory.Exists(dir))
        {
            Directory.CreateDirectory(dir);
            File.AppendAllText(Server.MapPath("~/Error.txt"), "Message :" + ex.Message + "<br/>" + Environment.NewLine + "StackTrace :" + ex.StackTrace +
       "" + Environment.NewLine + "Date :" + DateTime.Now.ToString());
            string New = Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine;
            File.AppendAllText(Server.MapPath("~/Error.txt"), New);
        }
    }
}

Here, I want to save an Exception in "C:\" ..I am trying In DAL... How to save the Exception In C drive Error.txt

Brian
  • 5,069
  • 7
  • 37
  • 47
Sambasiva
  • 1,034
  • 3
  • 16
  • 29

5 Answers5

76

Since you want to save the exception to C:\Error.txt, you don't need Directory.Exists, Directory.CreateDirectory, or Server.MapPath("~/Error.txt"). You can simply use StreamWriter like this:

string filePath = @"C:\Error.txt";

Exception ex = ...

using( StreamWriter writer = new StreamWriter( filePath, true ) )
{
    writer.WriteLine( "-----------------------------------------------------------------------------" );
    writer.WriteLine( "Date : " + DateTime.Now.ToString() );
    writer.WriteLine();

    while( ex != null )
    {
        writer.WriteLine( ex.GetType().FullName );
        writer.WriteLine( "Message : " + ex.Message );
        writer.WriteLine( "StackTrace : " + ex.StackTrace );

        ex = ex.InnerException;
    }
}

The above code will create C:\Error.txt if it doesn't exist, or append C:\Error.txt if it already exists.

Dai
  • 141,631
  • 28
  • 261
  • 374
ekad
  • 14,436
  • 26
  • 44
  • 46
  • I get this error when i try to create a new StremWriter: A required privilege is not held by the client. – Christoph Adamakis Dec 13 '16 at 12:08
  • 2
    If your file path is `C:\Error.txt`, then you might not have write permissions to the root folder of C drive. Please try another path like a path inside your website folder, i.e `Server.MapPath("~/Error.txt")`. – ekad Dec 13 '16 at 23:44
8
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.IO;
    namespace ErrorLoggingSample
    {
     class Program
      {
      static void Main(string[] args)
      {
        try
        {
            string str = string.Empty;
            if (string.IsNullOrEmpty(str))
            {
                throw new Exception("Wrong Data");
            }
        }
        catch (Exception ex)
        {
            ErrorLogging(ex);
            ReadError();
        }

    }

    public static void ErrorLogging(Exception ex)
    {
        string strPath = @"D:\Rekha\Log.txt";
        if (!File.Exists(strPath))
        {
            File.Create(strPath).Dispose();
        }
        using (StreamWriter sw = File.AppendText(strPath))
        {
            sw.WriteLine("=============Error Logging ===========");
            sw.WriteLine("===========Start============= " +       DateTime.Now);
            sw.WriteLine("Error Message: " + ex.Message);
            sw.WriteLine("Stack Trace: " + ex.StackTrace);
            sw.WriteLine("===========End============= " + DateTime.Now);

        }
    }

    public static void ReadError()
    {
        string strPath = @"D:\Rekha\Log.txt";
        using (StreamReader sr = new StreamReader(strPath))
        {
            string line;
            while ((line = sr.ReadLine()) != null)
            {
                Console.WriteLine(line);
            }
        }
      }
   }
  }
RekhaShanmugam
  • 177
  • 2
  • 5
2

I use that one

catch (Exception e)
{
    new MessageWriteToFile(e).WriteToFile();
}


public class MessageWriteToFile
{
    private const string Directory = "C:\\AppLogs";
    public string Message { get; set; }
    public Exception Exception { get; set; }
    public string DefaultPath
    {
        get
        {
            var appName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
            var folder = $"{Directory}\\{appName}";

            if (!System.IO.Directory.Exists(folder))
            {
                System.IO.Directory.CreateDirectory(folder);
            }

            var fileName = $"{DateTime.Today:yyyy-MM-dd}.txt";
            return $"{Directory}\\{appName}\\{fileName}";
        }
    }

    public MessageWriteToFile(string message)
    {
        Message = message;
    }

    public MessageWriteToFile(Exception ex)
    {
        Exception = ex;
    }

    public bool WriteToFile(string path = "")
    {
        if (string.IsNullOrEmpty(path))
        {
            path = DefaultPath;
        }

         try
        {
            using (var writer = new StreamWriter(path, true))
            {
                writer.WriteLine("-----------------------------------------------------------------------------");
                writer.WriteLine("Date : " + DateTime.Now.ToString(CultureInfo.InvariantCulture));
                writer.WriteLine();

                if (Exception != null)
                {
                    writer.WriteLine(Exception.GetType().FullName);
                    writer.WriteLine("Source : " + Exception.Source);
                    writer.WriteLine("Message : " + Exception.Message);
                    writer.WriteLine("StackTrace : " + Exception.StackTrace);
                    writer.WriteLine("InnerException : " + Exception.InnerException?.Message);
                }

                if (!string.IsNullOrEmpty(Message))
                {
                    writer.WriteLine(Message);
                }

                writer.Close();
            }
        }
        catch (Exception)
        {
            return false;
        }

        return true;
    }
}
Ergin Çelik
  • 719
  • 7
  • 14
1

Try This

 try
    {
        int i = int.Parse("Prashant");
    }
    catch (Exception ex)
    {
        this.LogError(ex);
    }

   private void LogError(Exception ex)
   {
    string message = string.Format("Time: {0}", DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss tt"));
    message += Environment.NewLine;
    message += "-----------------------------------------------------------";
    message += Environment.NewLine;
    message += string.Format("Message: {0}", ex.Message);
    message += Environment.NewLine;
    message += string.Format("StackTrace: {0}", ex.StackTrace);
    message += Environment.NewLine;
    message += string.Format("Source: {0}", ex.Source);
    message += Environment.NewLine;
    message += string.Format("TargetSite: {0}", ex.TargetSite.ToString());
    message += Environment.NewLine;
    message += "-----------------------------------------------------------";
    message += Environment.NewLine;
    string path = Server.MapPath("~/ErrorLog/ErrorLog.txt");
    using (StreamWriter writer = new StreamWriter(path, true))
    {
        writer.WriteLine(message);
        writer.Close();
    }
}
PK-1825
  • 1,431
  • 19
  • 39
0

string[] path1 = Directory.GetFiles(@"E:\storage", "*.txt");//it get the all textfiles from the folder

                for (var i = 0; i < path1.Length; i++)
                {
                var file = Directory.GetDirectories(networkPath);

                

                    var path = file;
                string temp_FilePath = "E:\\temp.txt";
                string temp_FilePath1 = @"E:\ExceptionFiles\Cs_regular\\Cs_regular.txt";
                string temp_FilePath2 = @"E:\ExceptionFiles\CC_eBilling\\CC_eBilling.txt";
                string folder = @"E:\ExceptionFiles\Cs_regular";
                string folder1 = @"E:\ExceptionFiles\CC_eBilling";



                string[] lines;
                var list = new List<string>();
                var list1 = new List<string>();
                var list2 = new List<string>();
                var error = false;
                var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);
                var fileStream1 = new FileStream(path, FileMode.Open, FileAccess.Read);
                var fileStream2 = new FileStream(path, FileMode.Open, FileAccess.Read);




                using (var streamReader = new StreamReader(fileStream, Encoding.UTF8))
                {
                    string line;



                    while ((line = streamReader.ReadLine()) != null)
                    {


                        var res = line.Substring(20, 16);
                        //var timenow = DateTime.Now.ToString("yyyy /MM/dd HH:mm");
                        var timenow1 = "2020/10/31 10:11";

                        if (res == timenow1)
                        {

                            string linesRemoved = "ERROR";

                            if (!line.Contains(linesRemoved))
                            {

                                if (error == true)
                                {
                                    if (line.Contains("at"))
                                    {
                                        list1.Add(line);
                                        error = true;
                                    }
                                    else
                                    {
                                        error = false;
                                    }
                                }

                            }
                            else
                            {
                                error = false;
                            }




                            if (line.Contains("Exception1") && error == false)
                            {
                                list1.Add(line);
                                error = true;
                            }

                        }



                    }
                }

                

                using (var streamReader2 = new StreamReader(fileStream2, Encoding.UTF8))
                {
                    string line;
                    while ((line = streamReader2.ReadLine()) != null)
                    {
                        string linesRemoved = "ERROR";
                        var res = line.Substring(20, 16);
                        //var timenow = DateTime.Now.ToString("yyyy/MM/dd HH:mm");
                        var timenow1 = "2020/10/29 12:38";
                        if (res == timenow1)
                        {

                            if (!line.Contains(linesRemoved))
                            {
                                if (error == true)
                                {
                                    if (line.Contains("at"))
                                    {

                                        list2.Add(line);
                                        error = true;
                                    }
                                    else
                                    {
                                        error = false;
                                    }
                                }
                            }
                            else
                            {
                                error = false;
                            }



                            if ((line.Contains("Exception2") && line.Contains("Exception:")) && error == false)
                            {
                                list2.Add(line);
                                error = true;

                            }
                        }






                    }
                }




                if ((System.IO.File.Exists(temp_FilePath1) || System.IO.File.Exists(temp_FilePath2)))
                {

                    int fileCount = Directory.GetFiles(folder).Length;
                    int fileCount1 = Directory.GetFiles(folder1).Length;
                    fileCount++;
                    fileCount1++;
                    temp_FilePath1 = temp_FilePath1 + "(" + fileCount.ToString() + ").txt";
                    temp_FilePath2 = temp_FilePath2 + "(" + fileCount1.ToString() + ").txt";


                }
                {
                    System.IO.File.WriteAllLines(temp_FilePath1, list1);
                    System.IO.File.WriteAllLines(temp_FilePath2, list2);

                }





                System.IO.File.WriteAllLines(temp_FilePath, list);

                System.IO.File.WriteAllLines(temp_FilePath1, list1);
                System.IO.File.WriteAllLines(temp_FilePath2, list2);

                }

            }
        }
        catch (Exception ex)
        {

        }



        return null;