我在这里遇到了一个问题,我现在正在实习,我必须修改给定的程序。 我遇到了一些滞后问题,我终于找到了问题所在:日志编写器 ...
程序运行得越多,实际上就越慢。我发现这是因为日志文件的 streamwriter,这里是代码:
using (StreamWriter swLog = new StreamWriter(GenerateDaylog(_logPath), true))
{
String sLog = "";
sLog += DateTime.Now.ToShortDateString();
sLog += " ";
sLog += DateTime.Now.ToLongTimeString();
sLog += "\t";
sLog += new StackFrame(1).GetMethod().DeclaringType.Name;
sLog += "\t";
sLog += new StackFrame(1).GetMethod().Name;
sLog += "\t";
sLog += msg;
Trace.Listeners.Add(new TextWriterTraceListener(swLog));
Trace.WriteLine(sLog);
}
现在日志文件大约有 100 - 500 ko,每天都会创建一个新的日志文件,名称中包含日期。
我猜是 streamwriter 有问题,但我不知道是什么。
最佳答案
这可能是问题所在:
Trace.Listeners.Add(new TextWriterTraceListener(swLog));
每次添加日志条目时,您都会添加一个额外的跟踪监听器...所以第一次,您将获得一个日志条目。第二次,你会得到两个(新的)日志条目,等等。你应该能够在你的日志中看到这个(尽管当你添加一个监听器然后处理编写器时,不太清楚会发生什么).
如果您确切地知道要写入的内容,那么为什么不使用 swLog.WriteLine(.. .)
?
此外,我鼓励您使用 string.Format
而不是所有重复的字符串连接...最好使用专用的日志记录框架(例如 NLog 或 log4Net ) .
关于c# - 使用 StreamWriter 和 Trace Listeners 写入日志非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23244963/