Почему важно вести журнал?

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

Как внедрить ведение журнала?

На рынке есть много инструментов, с помощью которых мы можем реализовать ведение журнала. Например, в .NET Core люди в основном использовали множество библиотек для ведения журналов, с помощью которых мы собираемся обрабатывать все сценарии, присутствующие в приложении, и это будет полезно для нас, когда приложение работает в производственной среде.

Предпосылки

  1. Базовое понимание программирования на C#.
  2. Понимание .NET Core API
  3. Базовое понимание Внедрения зависимостей.

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

Повестка дня

  1. Сначала мы создаем приложение .NET Core API.
  2. Создайте класс Logger, который мы собираемся использовать для ведения журнала.
  3. Зарегистрируйте класс Logger в классе Startup в контейнере внедрения зависимостей.
  4. После этого мы собираемся внедрить это из конструктора контроллера API.
  5. наконец, примените его к одному из методов контроллера для целей тестирования.

Шаг 1)

Откройте Visual Studio и создайте проект API .NET Core.

Шаг 2)

Создайте класс регистратора

  • Здесь вы можете видеть, что мы создаем класс Logger и внутри него создаем два метода, которые мы собираемся использовать для записи журнала в определенный файл и место после создания файла, и если файл уже присутствует в этом месте, то он будет добавлен записывать в него данные.
  • Итак, внутри первого метода мы принимаем сообщение журнала, а внутри блока try мы указываем путь к нашему каталогу, в котором мы собираемся создать файл журнала, и записываем журнал в этот файл при определенном событии, вызываем другой метод и передать путь к каталогу, имя файла и сообщение этому методу.
  • Кроме того, во втором методе класса Logger мы использовали Stream Writer для записи журнала, в котором мы записываем журнал в хорошо структурированном формате, а также за миллисекунду.

Шаг 3)

Теперь мы устанавливаем одну переменную среды внутри настройки приложения, которую мы собираемся использовать в методе настройки служб, который присутствует в классе запуска.

Шаг 4)

Затем зарегистрируйте класс Logger как одноэлементную службу DI в методе настройки служб, который присутствует внутри класса Startup.

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

Как вы видите, в методе настройки службы мы регистрируем класс Logger в контейнере службы, связанный с внедрением зависимостей, а также включаем swagger для тестирования конечной точки.

Шаг 5)

Создайте один тестовый контроллер и поместите некоторый код для целей тестирования, как я упоминал ниже.

Итак, здесь вы можете видеть, что мы вводим класс Logger внутри конструктора, а затем используем его внутри метода входа только для тестирования.

Шаг 6)

Наконец, запустите приложение и нажмите конечную точку

Шаг 7) Итак, здесь, внутри файла журнала, вы можете видеть, что журнал поддерживается в хорошо структурированном формате, и это очень полезно для нас во многих сценариях.

Заключение

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

Я надеюсь, вы понимаете.

Удачного кодирования!

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

Внедрение зависимостей и различные способы его внедрения с использованием .NET Core API