我有一个使用简单日志记录过程的程序。这个想法是每天都会创建一个与日期相对应的新文件,除非该文件已经存在,在这种情况下它只是附加到。问题是,File.Create 每次运行时都会引发错误。我找到了解决问题的方法,即 File.Create 正在打开 FileStream,您只需要使用 .close(); 调用它即可。但是该解决方案对我不起作用,我仍然收到 IO 异常,说该文件正在被另一个进程使用,这是不可能的,因为它在 File.Create 创建它之前不存在,并且没有其他使用这些文件。
这是代码:
public static void logResults(System.Reflection.MethodBase method, Results result, string message)
{
string date = DateTime.Now.ToString();
int index = date.IndexOf(" ");
string subString = date.Substring(0, index);
string nwDate = Regex.Replace(subString, "/", "");
logFileName = "WebsiteRegressionProduction_TestCycle." + nwDate;
string currentLogFile = logFileLocation + @"\" + logFileName;
StringBuilder sb = new StringBuilder();
if (!File.Exists(currentLogFile))
{
File.Create(currentLogFile).Close();
sb.Append("DATE-TIME\tACTION\tTEST CLASS\tTEST NAME\tTEST STATUS\tERROR MESSAGES");
sb.Append("\n");
}
else
{
string previousLogs = File.ReadAllText(currentLogFile);
sb.Append(previousLogs);
}
sb.Append(DateTime.Now.ToString());
sb.Append(" : ");
sb.Append("Text Executed: ");
sb.Append(method.ReflectedType.Name + " : ");
sb.Append(method + " : ");
sb.Append(result.ToString());
sb.Append(" : ");
sb.Append(message);
sb.Append("\n");
sb.Append("\n");
File.WriteAllText(currentLogFile, sb.ToString());