ASP.NET Core — Serilog İle Veri Loglama

Serilog , .NET uygulamaları için en popüler Log kitaplıklarından(libraries) birisidir. Kurulumu kolaydır ve çok sayıda güçlü özellik sunar. Yazılım geliştiricilerin özelleştirilmiş kodlarını buna eklemelerine ve bu kitaplığın işlevselliğini daha da genişletmelerine olanak tanıyan birçok uzantı noktasına sahiptir. Bu makale sonunda, metin tabanlı Log dosyalarına nasıl mesaj kaydedebileceğinizi göstereceğim.

Serilog nedir?

Yazılım uygulamalarının en can alıcı noktalarından biri işleyişteki her bir adımı raporlayıp kayıt altına alan log mekanizmalarıdır diyebiliriz. Serilog , uygulamanıza bazı harika tanılama özellikleri eklemek için kullanılabilecek .NET uygulamaları için yapısal bir log kitaplığıdır(library).

Yazılım geliştiricilerin dosyalara, consola, veri tabanlarına ve mesaj kuyruklarına dahil olmak üzere yüzlerce farklı hedefe mesajlarını kaydetmelerine olanak tanır.

Structured Logging
Structured Loggin(Yapılandırılmış günlük kaydı), uygulama logları için metin yerine veri kümeleri olarak ele alınmalarına olanak tanıyan tutarlı, önceden belirlenmiş bir mesaj biçimi uygulama pratiğidir.

Serilog Seviyeleri

Şimdi ASP.NET Core MVC projesi oluşturup onun üzerinden işlemlerimizi yapmaya geçelim. Bu proje üzerinde örnek olması açısında 0'a bölme hatası alıp bu hatayı loglayalım.

Projemizde bir “Services” klasörü oluşturarak başlayalım ve ardından aşağıdaki IMathService interfacesini Services klasörüne ekleyelim.

Daha sonra, aynı Services klasörüne bir MatchService sınıfı ekleyip bu sınıfa IMathService interfacesini uygulayalım.

Daha sonra, servis sınıfımızı .NET Core DI Container kullanarak register edelim.

ve son olarak, HomeController’ıma IMathService ve ILogger’ı enjekte ediyorum ve Divide methoduna iki ondalık parametre gönderiyorum.

Herhangi bir ondalık sayıyı 0'a bölemeyeceğimiz için, oluşturulan hata mesajının log’a kaydedildiğini aşağıdaki çıktıyla görebiliyoruz.

ASP.NET Core Uygulamasına Serilog Entegrasyonu

Visual Studio’da bulunan NuGet Paket Yöneticisi’ni kullanarak aşağıda ki paketleri indirip kuralım.

Şimdi yapmanız gereken ilk şey, .NET log kaydı yapılandırmasını appsettings.json dosyasından kaldırmaktır. Bunun nedeni, Serilog’un log kaydetmesini yapılandırmak için basit bir C# API kullanmasıdır. Serilog’u yapılandırmak için yine de harici bir appsettings.json dosyası kullanmak istiyorsanız, Serilog.Settings.AppSettings (.NET Framework) veya Serilog.Settings.Configuration (.NET Core) paketlerini indirip kullanmamız gerekir.

Sonra LoggerConfiguration sınıfını kullanarak bir Serilog logger oluşturmamız gerekiyor ve bunu yapmanın en kolay yolu Serilog’un global, statik olarak erişilebilir logger’ını kullanmaktır. Program.cs sınıfını açıp aşağıdaki kod parçacığında gösterildiği gibi yapılandıralım.

Projeyi şimdi çalıştırıp, debug ekranın da aşağıdaki log mesajlarını görelim.

Log mesajlarını JSON formatında kaydetme

Serilog.Formatting.Compact paketini projemize ekledikten sonra log mesajlarını JSON biçiminde yazmak için, aşağıdaki kod parçacığında gösterildiği gibi yapılandırma methoduna bir CompactJsonFormatter veya RenderedCompactJsonFormatter iletelim.

Şimdi projeyi tekrar çalıştırıp log mesajlarının veya istisnaların hepsinin JSON formatında kaydedildiğini görelim.

Log mesajlarını dosyaya kaydetme

Serilog.Sinks.File paketini kullanarak dosyalara log mesajlarını kaydedebiliriz .

Şimdi projeyi çalıştırıp projemizde bir metin dosyası oluştuğunu görebiliriz.

Adına bugünün tarihi eklenmiş bir log.txt dosyası görüyoruz.

Serilog’u daha önce kullanmadıysanız, projelerinizde kullanmaya başlamanızı tavsiye ederim.

Geldik bir makalenin daha sonuna. Yeni bir makalede görüşmek üzere hoşçakalın.

Source Code: https://github.com/vmutlu/ASPNETCore_SerilogExample

Junior Software Developer

Junior Software Developer