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