Я медленно изучаю .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;
}
}
Я подозреваю, что есть гораздо более простой способ сделать это, чем выше, но я не могу понять,это и не могу найти какие-либо предложения в Интернете.Любая помощь с благодарностью получена.