当我尝试将文本附加到日志文件时,我的日志文件变为空

When i try to append text to a log file, my log file becomes empty

我正在尝试检查是否存在具有相同名称的日志文件,如果存在,我想追加到当前日志文件中,但如果不存在,我想创建一个具有当前日期的新文件当应用程序为 运行 时。问题是当我尝试附加到我已经存在的日志文件时,日志文件变为空。

 string logFileLocation = Application.UserAppDataPath + "\ cvDiagnostics_log_30-01-2022.text";

     StreamWriter logFileStream = new StreamWriter(new FileStream(logFileLocation, FileMode.Create));

     List<OutputEntry> outputMessages = new List<OutputEntry>();
     outputMessages.AddRange(logInfoOutputMessages);
     outputMessages.AddRange(logDebugOutputMessages);
     outputMessages.AddRange(logWarningOutputMessages);
     outputMessages.AddRange(logErrorOutputMessages);
     outputMessages = outputMessages.OrderBy(e => e.DisplayedTimeStamp).ToList();

     logFileStream.WriteLine( DateTime.Now.ToString());

     foreach (var message in outputMessages)
     {
        logFileStream.WriteLine(message.ToString());
     }

这是我尝试检查并附加到现有日志文件:

         if (File.Exists(logFileLocation))
     {
        File.AppendAllText(logFileLocation, outputMessages.ToString());
     }
  }
        else
        {
           File.Create(logFileLocation + DateTime.Now.ToString());
        }

要打开文件,请使用 FileMode.Create 打开 FileStream。如果文件已经存在,这将截断该文件。

 StreamWriter logFileStream = new StreamWriter(new FileStream(logFileLocation, FileMode.Create));

将此更改为:

 StreamWriter logFileStream = new StreamWriter(new FileStream(logFileLocation, FileMode.Append));

来自 FileMode.Create 上的 documentation

”指定操作系统应该创建一个新文件,如果文件已经存在,则覆盖它。这需要Write权限。FileMode.Create相当于请求如果文件不存在,使用CreateNew;否则使用Truncate。如果文件已经存在但为隐藏文件,则抛出UnauthorizedAccessException异常。"