【问题标题】:Identify execution time and Tracing of each API in ASP.NET WEB API and log to files using log4net using C#识别 ASP.NET WEB API 中每个 API 的执行时间和跟踪,并使用 C# 使用 log4net 记录到文件
【发布时间】:2016-10-14 20:16:46
【问题描述】:

目前,我正在使用log4net捕获每个API的执行时间,并在每个API的开始和结束时明确提及开始时间和结束时间并写入日志文件,如下所示

[HttpGet]
Public IHttpActionResult GetProducts()
{
    Log.info("API Execution Started at " + DateTime.Now());

    Var Products = UnitOfWork.GenericRepo.GetProducts();

    Log.Info("API Execution Completed at "+ DateTime.Now());

    Return Ok(Products);
}

有没有更好的方法来捕获每个 API 的执行时间并将其写入日志文件? 另外,请向我提供有关如何捕获所有 API 的跟踪信息并将其写入不同日志文件的见解。例如,每个API的执行时间应该写入“ExecutionLog.txt”,Tracing infomration写入“TracingLog.txt”。我还应该能够在运行时启用或禁用此功能。

提前致谢

【问题讨论】:

标签: c# asp.net-web-api2


【解决方案1】:

使用来自System.Diagnostics 命名空间的Stopwatch

看这个例子Example

MSDN

【解决方案2】:

System.Diagnostics 命名空间中,您有一个名为StopWatch 的类。您可以使用它来检查函数执行时间。使用Start()Stop() 方法查找总执行时间。

这里是一个简单的例子,取自dotnet Pearl网站

Stopwatch stopwatch = new Stopwatch();

// Begin timing.
stopwatch.Start();

// Do something.
for (int i = 0; i < 1000; i++)
{
    Thread.Sleep(1);
}

// Stop timing.
stopwatch.Stop();

// Write result.
Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed);

【讨论】:

    【解决方案3】:

    @Mahesh,您不需要在每个 API 中编写它。您可以使用 ActionFIlter 和 ResultFilter 并编写一个代码块来跟踪 API 中的所有操作

    看看这个 https://jmperezperez.com/tracking-action-execution-time-in-asp-net-mvc/

    【讨论】:

      猜你喜欢
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多