using Microsoft.Extensions.Configuration; using Serilog; using Serilog.Events; namespace SameBeat.Infrastructure.Logowanie; /// /// Centralna konfiguracja Serilog -- konsola + plik z rotacja dzienna w SameBeat.Api/logs/. /// UWAGA: nigdzie w kodzie nie loguj hasel ani tokenow (JWT, LiveKit) -- ani w tresci komunikatu, /// ani jako property w strukturalnym logu. /// public static class KonfiguracjaSerilog { public static LoggerConfiguration Zbuduj(IConfiguration konfiguracja, string sciezkaKatalogowaLogow) { return new LoggerConfiguration() .MinimumLevel.Information() .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning) .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning) .Enrich.FromLogContext() .WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {SourceContext}: {Message:lj}{NewLine}{Exception}") .WriteTo.File( path: Path.Combine(sciezkaKatalogowaLogow, "samebeat-.log"), rollingInterval: RollingInterval.Day, retainedFileCountLimit: 30, outputTemplate: "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} {Level:u3}] {SourceContext}: {Message:lj}{NewLine}{Exception}") .ReadFrom.Configuration(konfiguracja); } }