首页 > 解决方案 > 使用 .NET 注释记录方法执行时间

问题描述

是否有任何现有的库可以仅使用方法注释来记录方法执行时间(我更喜欢 serilog、anotar.serilog)?

标签: c#.netserilog

解决方案


如果您的意图是记录控制器/操作的经过时间。您可以为此编写自己的中间件。检查下面的示例:

public class DiagnosticsMiddleware 
{
    private readonly RequestDelegate _next;

    public DiagnosticsMiddleware(RequestDelegate next, IElasticClient esClient)
    {
        _next = next;
        _esClient = esClient;
    }

    public async Task Invoke(HttpContext context)
    { 
        Stopwatch sw = Stopwatch.StartNew();


        await _next(context);

        sw.Stop();
        var elapsedTime = sw.ElapsedTicks / (Stopwatch.Frequency / (1000L * 1000L));
        LogContext.PushProperty("ElapsedTime", elapsedTime);
    }

}

你可以像这样配置它

public void Configure(IApplicationBuilder app)
{
    app.UseMiddleware<ContextEnricherMiddleware>();
}

推荐阅读