Serilog nedir, nasıl kullanılır?

Serilog nedir, nasıl kullanılır?


Öncelikle şu iki paketi yükleyelim. Nuget

Install-Package Serilog.AspNetCore -Version 3.4.0

Nuget

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..

An error has occurred. This application may no longer respond until reloaded. Reload 🗙