.NET Core自定义ILogger中间件,用于捕获长时间运行的请求

时间:2018-04-25 20:19:07

标签: asp.net-core .net-core

我正在慢慢学习.NET Core,并且正在努力探索日志中间件。我写了一个自定义ILogger,它注销到一个文本文件。默认情况下,.NET核心将记录有关每个请求所用时间长度的信息,例如:

Information: Request finished in 154.0077ms 200 application/json

我要求将任何超过 n ms的请求记录为警告而不是信息,以便在生产中将默认日志级别设置为警告并且仍然捕获这些慢速请求

目前我正在执行以下操作,但是只有将默认日志级别设置为“信息”(我不希望在生产中)时才会这样做。显然将默认值更改为警告意味着“请求已完成”数据甚至不会传递给记录器。

Regex requestFinished = new Regex(@"(.*\s)([0-9]{1,}[.]?[0-9]{1,})([m]?s)");
Match match = requestFinished.Match(message);

if (match.Success)
{
    double timeTaken = 0;
    Double.TryParse(match.Groups[2].ToString(), out timeTaken);

    if (timeTaken > MyService.ExecutionThreshold)
    {
         logLevel = LogLevel.Warning;
    }
}

我怀疑这样做的方式比上面容易得多,但我无法弄清楚,似乎无法在网上找到任何建议。任何帮助都感激不尽。

0 个答案:

没有答案