asp.net-core - .NET Core 自定义 ILogger 中间件以捕获长时间运行的请求
问题描述
我正在慢慢学习 .NET Core,并且正在努力理解日志中间件。我编写了一个自定义的 ILogger,它注销到一个文本文件。默认情况下,.NET core 会记录每个请求所用时间长度的信息,例如:
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;
}
}
我怀疑有一种比上述方法更简单的方法,但我无法弄清楚并且似乎无法在网上找到任何建议。感激地收到任何帮助。
解决方案
推荐阅读
- javascript - ExpressJS 路由无法解析
- php - 检查页面后如何在实际的 PHP 文件中找到代码?
- php - Laravel 中间件取消请求并保持页面处于相同状态
- javascript - 带有大括号的 ID 上的 QuerySelector
- tesseract - tesseract 3.01 的法语 Tessdata
- javascript - 非常简单的 ngModel 示例
- javascript - 获取特征文本并更改它 - openlayers
- java - 在java类中通过Spring XML传递URL
- javascript - 使用 .then 进行包装在函数中的 ajax 调用
- java - Lambda表达式,如何在自定义方法中将方法作为参数传递