Какой метод логирования выбрать для проекта на ASP.NET Core?

Есть проект на ASP.NET Core хочу добавить логирование , но не знаю какой метод лучше выбрать. Serilog , NLog или что-то свое кастомное написать . Хочу , чтоб логика логирования была максимально гибкой с возможностью записи в любой тип БД ( Кажется в Serilog есть возможность работы только с MSSQL ) Если кто видел , встречал годные проекты с собственными кастомными классами для Логирования был бы рад посмотреть . Спасибо )


Ответы (1 шт):

Автор решения: Frehzy

Лично я пользуюсь обычно Serilog просто потому что мне с ним удобнее. В Program.cs напишите что-то подобное и всё у вас будет работать. Для вызова используйте Log.***("*someMessage*")

public static void Main(string[] args)
{
    Log.Logger = new LoggerConfiguration()
        .MinimumLevel.Override("Microsoft", LogEventLevel.Information)
        .Enrich.FromLogContext()
        .WriteTo.File(rollingInterval: RollingInterval.Day,
                      rollOnFileSizeLimit: true,
                      shared: true,
                      outputTemplate: "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff} {Level:u3}] {Message:lj}{NewLine}{Exception}",
                      path: string.Concat(AppDomain.CurrentDomain.BaseDirectory, @"Logs\log.log"),
                      encoding: Encoding.UTF8)
        .WriteTo.Console(outputTemplate: "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff} {Level:u3}] {Message:lj}{NewLine}{Exception}")
        .CreateLogger();

    var hostBuilder = Host.CreateDefaultBuilder(args);
    var host = ConfigureHostBuilder(hostBuilder);
    host.Run();
    Log.Information("Starting web host");
}

Плюсом к этому создаю статический класс для красивой сериализации объектов:

public static class Options
{
    private static JsonSerializerOptions _jsonSerializerOptions;

    public static JsonSerializerOptions JsonSerializerOptions => _jsonSerializerOptions ??= CreateSerializerOptions();

    private static JsonSerializerOptions CreateSerializerOptions()
    {
        var options = new JsonSerializerOptions()
        {
            WriteIndented = true,
            Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
            AllowTrailingCommas = true,
            NumberHandling = JsonNumberHandling.AllowReadingFromString,
            PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
            PropertyNameCaseInsensitive = true
        };
        return options;
    }
}

Таким образом, для логирования каких-либо сущностей из БД вполне будет достаточно записи: Serilog.Log.Information(System.Text.Json.JsonSerializer.Serialize(entity, Options.JsonSerializerOptions))

→ Ссылка