我决定在我的应用程序中添加一个日志记录机制,这样我就可以捕获所引发的任何错误或异常。我注意到,当创建日志条目时,它不会添加到日志中,它似乎会覆盖文件中的所有内容,因此只有一个条目。
我感觉这很简单,我很遗憾,但我并不经常使用System.IO命名空间。
创建/检查日志文件:
public static void SetWorkingDirectory(string path)
{
_workingDirectory = path + "\\ErrorLog.txt";
if(!File.Exists(_workingDirectory))
{
File.Create(_workingDirectory);
}
pathSet = true;
}
添加到日志:
public static bool Add(string message)
{
StringBuilder str = new StringBuilder();
str.Append(System.DateTime.Now);
str.Append(" ");
str.Append(message);
str.Append(" \n");
using (StreamWriter writer = new StreamWriter(_workingDirectory))
{
writer.Write(str.ToString());
}
return true;
}
日志本身:
答案 0 :(得分:4)
尝试使用this构造函数并为第二个参数传递true,以便以追加模式打开文件。
...
using(writer = new StreamWriter(_workingDirectory, true))
...
答案 1 :(得分:3)
只需使用StreamWriter的重载来获取bool以确定它是否应该追加。
using (var writer = new StreamWriter(_workingDirectory, true)
{
...
}
答案 2 :(得分:2)
您正在使用的StreamWriter
构造函数会覆盖该文件。有一个重载会附加:
using (StreamWriter writer = new StreamWriter(_workingDirectory, true))
此外,除非这是学习,否则请使用许多可用的日志框架之一。记录可能很难做到。
答案 3 :(得分:1)
之前已经花费了很多编程时间来解决这个问题。我建议使用日志软件包(例如log4net)来节省调试代码的时间,以便让您检测正在编写的代码。
答案 4 :(得分:1)
正如上面所说,当执行日志记录时,最好使用一个现成的日志记录框架,因为没有极大的努力,他们将能够比你更有效,更清洁地完成它。我在.NET中最喜欢的是使用预先打包的System.Diagnostics跟踪实用程序,它允许您在应用程序配置中声明一个tracelistener,然后在代码中写入它们,如下所示:
Trace.Write("Test output ");
或者,您可以使用log4Net框架。