Задать вопрос
bullock
@bullock

Как правильно собирать временные метрики?

Вопрос связан с тем что это мой первый опыт сбора метрик.
Правильно ли я собираю информацию о времени выполнения запроса сервером, к примеру у меня есть такой код:
// Один из методов контроллера
public IActionResult SomeMethod()
{
    DateTime metricsStart = DateTime.Now;
    try
    {
        // что то делаю и возвращаю клиенту результат

        return Json( auctions );
    }
    catch ( Exception e )
    {
        logger.LogError( $"error! ip:{accessor.HttpContext.Connection.RemoteIpAddress.ToString()} Discription: {e}." );
        return Json( "error" );
    }
    finally
    {
        string timeDifference= ( DateTime.Now - metricsStart ).TotalMilliseconds.ToString();
        logger.LogInformation( $"Ok. ip:  {accessor.HttpContext.Connection.RemoteIpAddress.ToString()} Time: {timeDifference}" );
    }
}

Это нормально?
UPDATE
можно-ли так делать в продакшене?
  • Вопрос задан
  • 142 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
petermzg
@petermzg
Самый лучший программист
Для подсчета времени следует использовать класс Stopwatch из пространства System.Diagnostics
Ответ написан
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
наброски к теме - https://i.imgur.com/xo1QmBg.png

ps .. в смысле фрагмент из продакшена ;)) .. ~90% функций во фрагменте собственные расширения, так что не ищите прямых аналогов (той же .log() - это тоже собственное расширение для string), просто общая суть ))

pps .. вариант реализации .log()

internal static void log(this string txt) => tbLog.AppendText(txt + Environment.NewLine);

;))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы