Почему важно вести журнал?
По сути, много раз мы устраняем ошибки приложений, некоторые из которых мы получили, когда наше веб-приложение работает в производственной среде, и если возникают какие-либо ошибки, их трудно отследить при устранении ошибок, поэтому важно ведение журнала.
Как внедрить ведение журнала?
На рынке есть много инструментов, с помощью которых мы можем реализовать ведение журнала. Например, в .NET Core люди в основном использовали множество библиотек для ведения журналов, с помощью которых мы собираемся обрабатывать все сценарии, присутствующие в приложении, и это будет полезно для нас, когда приложение работает в производственной среде.
Предпосылки
- Базовое понимание программирования на C#.
- Понимание .NET Core API
- Базовое понимание Внедрения зависимостей.
Итак, давайте начнем с пользовательского ведения журнала и ведения журнала потоков, как мы реализуем это без какого-либо инструмента ведения журнала и библиотек, которые уже присутствуют в .NET Core.
Повестка дня
- Сначала мы создаем приложение .NET Core API.
- Создайте класс Logger, который мы собираемся использовать для ведения журнала.
- Зарегистрируйте класс Logger в классе Startup в контейнере внедрения зависимостей.
- После этого мы собираемся внедрить это из конструктора контроллера API.
- наконец, примените его к одному из методов контроллера для целей тестирования.
Шаг 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