.NET Core специализированное промежуточное ПО ILogger для отлова длинных запросов - PullRequest
0 голосов
/ 25 апреля 2018

Я медленно изучаю .NET Core и изо всех сил пытаюсь разобраться с промежуточным программным обеспечением для ведения журналов.Я написал собственный ILogger, который выходит из системы в текстовый файл.По умолчанию ядро ​​.NET регистрирует информацию о времени, которое занимает каждый запрос, например:

Information: Request finished in 154.0077ms 200 application/json

У меня есть требование регистрировать любые запросы, которые занимают больше, чем n мсв качестве предупреждения, а не информации, так что в производстве уровень журнала по умолчанию может быть установлен на Предупреждение, и эти медленные запросы по-прежнему фиксируются

В настоящий момент я делаю следующее, что работает, но только если по умолчаниюУровень журнала установлен на Информация (что я не хочу в производстве).Очевидно, что изменение значения по умолчанию на предупреждение означает, что данные «запрос завершен» даже не передаются в регистратор.

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;
    }
}

Я подозреваю, что есть гораздо более простой способ сделать это, чем выше, но я не могу понять,это и не могу найти какие-либо предложения в Интернете.Любая помощь с благодарностью получена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...