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