2011-06-09 75 views
3

我已经创建了一个文本文件来保存该文件中的错误。我有一个按钮,一旦按下,就会产生一个应该保存到文件的错误。但是,如果我按下按钮两次,它将覆盖生成的第一个错误,因为文件的内容被覆盖。我想生成另一个单独的文件来保存新的错误。应为每个新错误生成一个新文件。C#创建一个文本文件包含错误日志

在此先感谢

+2

所以,如果我点击100次按钮,你想要创建100个文件。你为什么要这么做? – 2011-06-09 12:59:32

+0

真正的问题是,为什么U(@AshBurlaczenko)想要它?你是用户;) – Nix 2011-06-09 13:20:36

+0

为什么人们会问为什么有人想做点什么。这个网站不是关于理由,而是关于问题! – 2011-06-09 13:58:14

回答

1
private void SaveErrorMessage(string errorMessage) 
{ 
    string errorFile = null; 
    for(int x = 0; x < Int32.MaxValue; ++x) 
    { 
     errorFile = string.Format(CultureInfo.InvariantCulture, "error-{0}.txt", x); 
     if(!System.IO.File.Exists(errorFileTest)) 
     { 
      break; 
     } 
    } 

    File.WriteAllText(errorFile, errorMessage); 
} 

这将覆盖你已经Int32.MaxValue文件后,最后一个文件,但会采取一会儿。

另一种(也许更好)的方法是简单地附加到文件,而不是创建一个新的。

您可能还想考虑使用更强大的日志记录解决方案,如log4net

2

简单的使用方法:FileExists Method然后如果存在选择一个新的名字。或者,您可以将其追加到文件中。

PSUDO:

public string checkFileName(string fileName){ 
    if(File.Exists(fileName)){ 
    /Pick a new one 
    newFileName= fileName + DateTime.Now.ToLongDateString() 
    return checkFileName(newFileName) 
    } 
    return fileName 
} 

这可能是完美的链接,你How to Open and Append a log file

+0

我不想在同一个文件中附加错误。我想为每个错误创建一个单独的文件 – bharathi 2011-06-09 13:01:46

+0

然后采取我的第一个建议。检查文件是否存在,然后更改文件名。 – Nix 2011-06-09 13:05:53

+0

为什么使用递归进行此操作?在文件已经存在的(不太可能的)事件中,这个名字不断变长。 – Sven 2011-06-09 13:41:25

2

您可以在文件名中添加时间戳,在这种情况下您每次都会得到新文件。

1

所以你想为你的程序中发生的每个错误生成一个唯一的文件名?可能最简单的方法是使用错误发生时的日期/时间来命名文件。在您被写入文件中的函数,你会想名字像这样的文件:

string filename = LogPath + DateTime.Now.ToString("yyyyMMdd.HHmmss") + ".err"; 

哪里LOGPATH是通向你想的错误文件写入该文件夹。