首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用StreamWriter和跟踪侦听器在日志中写入非常慢

使用StreamWriter和跟踪侦听器在日志中写入非常慢
EN

Stack Overflow用户
提问于 2014-04-23 12:55:16
回答 1查看 777关注 0票数 1

我在这里面临一个问题,我现在正在实习,我必须修改一个给定的程序。我遇到了一些滞后问题,我终于发现了一个问题:日志作者.

程序运行得越多,速度就越慢,实际上。我发现这是因为日志文件的流编写器,下面是代码:

代码语言:javascript
复制
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,每天都会创建一个新的日志文件,并以它的名称显示日期。

我想这个流线器有问题,但我不知道它是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-23 12:57:07

这可能就是问题所在:

代码语言:javascript
复制
Trace.Listeners.Add(new TextWriterTraceListener(swLog));

每次添加日志条目时,都会添加一个额外的跟踪监听器.所以第一次,你会得到一个日志条目。第二次,您将得到两个(新的)日志条目,等等。您应该能够在日志中看到这一点(尽管当您添加一个侦听器,然后处理编写器时,不太清楚会发生什么)。

不清楚你为什么要使用Trace.WriteLine,因为你很清楚你想写什么--为什么不直接使用swLog.WriteLine(...)呢?

另外,我鼓励您使用string.Format,而不是重复的字符串连接.在理想情况下,可以使用专用日志框架(例如NLoglog4Net)。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23244963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档