Бекенд на C# Web Api
Логирование
Для логирования будем использовать библиотеку Serilog. Это удобная и простая в настройке библиотека. С помощью Serilog можно записывать логи в файл, в базу данных и в другие источники.

В проект нужно добавить следующие NuGet пакеты:
Serilog
Serilog.Sinks.File
Serilog.Extensions.Logging
Для настройки Serilog добавьте следующий метод в ServiceExtentions:
// файл Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddSerilog(builder.Logging, builder.Environment);// файл ServiceExtentions.cs
public static class ServiceExtensions
{
public static void AddSerilog(this IServiceCollection services, ILoggingBuilder loggingBuilder, IWebHostEnvironment environment)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.File("logs/log-.txt", rollingInterval: RollingInterval.Day)
.MinimumLevel.Is(environment.IsProduction() ? Serilog.Events.LogEventLevel.Information : Serilog.Events.LogEventLevel.Debug)
.CreateLogger();
loggingBuilder.ClearProviders();
if (environment.IsProduction() == false)
{
loggingBuilder.AddSerilog();
services.AddHttpLogging(o =>
{
o.LoggingFields = Microsoft.AspNetCore.HttpLogging.HttpLoggingFields.All;
});
}
}
}В данном примере логи будут записываться в файл по пути logs/log-<дата>.txt, где <дата> - дата текущего дня. Каждый день будет создаваться новый файл с логами (настройка RollingInterval.Day).
Также обратите внимание, что если мы находимся не в продакшн среде, то вызывается метод AddHttpLogging с параметром LoggingFields = All. Этот метод автоматически логирует все запросы ко всем эндпоинтам, при этом логирует всю возможную информацию (из-за настройки All). Это может быть удобно при отладке или тестировании, однако при средней и тем более большой нагрузке необходимо выключать такое логирование, т.к. файлы с такими детальными логами быстро увеличиваются в размере и снижают эффективность работы приложения.
После настройки Serilog можно в любом месте вызвать следующий код:
Log.Information($"Send confirmation code to {email});Этот лог попадет в файл logs/log<дата>.txt независимо от того в какой среде выполняется приложение (dev или prod).
Code Project — Integrate Serilog (Logging Framework) with ASP.NET Core
Автор документа: Артём Ветик