Serilog nedir, nasıl kullanılır?
Öncelikle şu iki paketi yükleyelim. Nuget
Install-Package Serilog.AspNetCore -Version 3.4.0
Install-Package Serilog.Sinks.File -Version 4.1.0
Startup.cs'i açınız ve aşağıdaki yapılandırmaları gerçekleştiriniz.
public void ConfigureServices(IServiceCollection services)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Warning()
.Enrich.FromLogContext()
.WriteTo.Debug(new RenderedCompactJsonFormatter())
.WriteTo.File(Path.Combine("logs", "logs.txt"), rollingInterval: RollingInterval.Day)
.WriteTo.Console()
.CreateLogger();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseSerilogRequestLogging(options =>
{
// Customize the message template
options.MessageTemplate = "Handled {RequestPath}";
// Emit debug-level events instead of the defaults
options.GetLevel = (httpContext, elapsed, ex) => LogEventLevel.Debug;
// Attach additional properties to the request completion event
options.EnrichDiagnosticContext = (diagnosticContext, httpContext) =>
{
diagnosticContext.Set("RequestHost", httpContext.Request.Host.Value);
diagnosticContext.Set("RequestScheme", httpContext.Request.Scheme);
};
});
}
Program.cs' de yapılacaklar.
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Serilog;
namespace Project.UI
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
Bu yapılandırmaları yaptıktan sonra appsettings.json'da bulunan Logging sectionına ait tüm kayıtları kaldırınız. Yukarıda gerçekleştirmiş olduğumuz yapıya göre. Yaptığınız loglamalar günlük olarak logs klasörünün altına kaydedilecektir. MinimumLevel.Warning seviyesini değiştirerek loglamanın kapsamını değiştirebilirsiniz.
Log.Warning("Sistem Uyarısı");
Log.Information("Sistem Mesajı");
Log.Fatal(new Exception("Test Error"), "Sistem Hatası");
Yukarıda bulunan kodları HomeController'a yerleştiriniz. Projenizi çalıştırıp console kayıtlarına ve logs klasöründeki değişikliklere bakınız. Sonucu gördüğünüzde neler yapabileceğinizi farketmiş olacaktır.
İyi çalışmalar..