0

我有一个 ASP.NET 网站。我正在编写日志文件以获取页面的总时间跨度。在 txt 文件中写入日志会影响我的程序的性能吗?我将其记录在诸如OnUnload.

string logString = string.Format("The total time span for the '{0}' is {1}ms",
                                 _page, 
                                 span.TotalMilliseconds);
WriteLog(logString);

日志摘录:

8/6/2013 05:38:27]:The total time span for the 'Assign' is 3121.1785ms
[8/6/2013 05:38:27]:The total time span for the 'Assign' is 5.0002ms
[8/6/2013 05:38:27]:The total time span for the 'Assign' is 5.0003ms
[8/6/2013 05:38:27]:The total time span for the 'Assign' is 4.0002ms
[8/6/2013 05:38:27]:The total time span for the 'Assign' is 5.0003ms
[8/6/2013 05:38:27]:The total time span for the 'Assign' is 6.0004ms
4

4 回答 4

1

嗯,影响很可能不会受到影响。只要您登录的次数不多,至少不会引起注意。你应该看看像log4net这样的日志框架。它会为你做很多事情,比如在给定数量的日志之后写入 txt 文件。这将减少写入文件的数量。

如果您想自己做,我建议您在另一个线程上执行日志,如下所示:

var thread = new Thread(message =>
    {
        // write message to txt file.
    });

thread.Start("This is a log statement");

这样它就不会占用你的主线程。但是,使用多个线程写入文件是非常危险的。你需要一些锁定:

private static readonly object _writeLock = new object();

var thread = new Thread(message =>
    {
        lock (_writeLock)
        {
            // write message to txt file.
        }
    });

thread.Start("This is a log statement");

现在您确定只有一个线程写入文件。我仍然建议使用 log4net 或任何其他为您完成这项工作的框架。

于 2013-08-20T11:59:41.513 回答
1

你在做某事任何事情都会影响你的表现。写入文件相对较慢,所以是的,它会对的性能产​​生影响。多少取决于您的硬件配置,坦率地说,取决于您WriteLog()没有展示的方法。

除此之外,一旦一个进程尝试将某些内容写入日志而另一个进程正在执行相同操作,您就会遇到问题。

如果您想尽量减少对性能的影响,请尝试尽快卸载日志记录,最好是转移到不同的线程。

于 2013-08-20T14:28:14.097 回答
0

如果你只需要时间,IIS 日志默认有。

默认 IIS 日志格式(如 IIS6 和 win server 2003,但这也是较新版本中的默认设置。

time-taken: The length of time that the action took, in milliseconds.
于 2013-08-20T15:02:14.070 回答
0

是的,它会影响应用程序的性能,效果与用户数量成正比

于 2013-08-20T12:52:36.773 回答