如何在txt文件中保存异常?

时间:2014-01-23 12:11:34

标签: c# asp.net c#-4.0 exception try-catch

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);
        }
    }
}

在这里,我想在“C:\”中保存一个异常。我正在尝试在DAL ...如何保存异常 C盘Error.txt

5 个答案:

答案 0 :(得分:58)

由于您要将例外保存到C:\Error.txt,因此您不需要Directory.ExistsDirectory.CreateDirectoryServer.MapPath("~/Error.txt")。您可以像这样使用StreamWriter

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;
    }
}

如果上述代码不存在,则会创建C:\Error.txt,如果已存在,则附加C:\Error.txt

答案 1 :(得分:7)

AddSongToPlaylist(song_object)

答案 2 :(得分:0)

尝试一下

 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();
    }
}

答案 3 :(得分:0)

我用那个

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;
    }
}

答案 4 :(得分:0)

string [] path1 = Directory.GetFiles(@“ E:\ storage”,“ * .txt”); //它从文件夹中获取所有文本文件

                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;