.Net Core’da Serilog Kullanarak Log’lama Yapma

Cansu Altunbas
Kodcular
Published in
2 min readNov 26, 2021

Serilog; dosyalara, konsola ve başka yerlere raporlama yapmayı sağlayan bir yapıdır (https://serilog.net). Yazılım uygulamalarında her bir adımın raporlanıp kayıt altına alınması büyük önem arz etmektedir. Bu sayede yazılım uygulamasında yaşanan problemler kayıt altına alınarak ilgili iyileştirmeler yapılabilmektedir.

Bu yazımda .net core projesinde serilog kullanarak database’e log kaydının nasıl yapıldığından bahsetmeye çalışacağım.

Öncelikle bir .net core projesi oluşturduğumuzu düşünelim. Serilog ile ilgili paketleri projemize dahil etmek için Manage Nuget Packages’ten aşağıdaki paketleri indirelim.

  • Serilog.AspNetCore
  • Serilog.Settings.Configuration
  • Serilog.Sinks.MSSqlServer

Projede yer alan appsetting.json dosyasına loglama işlemiyle ilgili konfigurasyonları tanımlayalım.

ConnectionStrings etiketi database bağlantısı ile ilgili bilgileri içermektedir. Default olarak konfigürasyonların okunabilmesi için tüm ayarlar Serilog etiketi altında başlatılmalıdır. (https://www.gencayyildiz.com/blog/asp-net-core-serilog-ile-veri-loglama-ve-seq-ile-gorsellestirme/). Serilog etiketi altında “Name” olarak belirttiğimiz alanı “MSSqlServer” belirtme nedenimiz log kayıtlarını database yazmak istememizden kaynaklanıyor. “tableName” alanı log kayıtlarını connection olduğumuz database’de yazmak istediğimiz tablonun adını göstermekte.

appsetting.json konfigurasyonundan sonra Program.cs class’ına geçiyoruz. Program.cs kısaca uygulamanın başladığı yerdir ve bir giriş noktası olarak değerlendirilebilir.

14.satırdaki UseSerilog() uzantısı, IHostBuilder’da ConfigureServices yöntemini çağırır.

Sıra logları yazacağımız “Log” tablosunu oluşturmaya geldi.

appsettings.json dosyasında “Log” tablosunun otomatik oluşturulması mümkün. Bunun için “autoCreateSqlTable”: true ifadesinin yazılması yeterli. Ancak ben iplerin kendi elimde olmasını tercih ettiğimden bu ibareyi yazmadım 🤭. Tabloyu oluşturduktan sonra sıra geldi Controller tarafında kullanmaya🥳.

Yukarıdaki kod bloğunda bir gridde kayıt silindiğinde log kaydı tutmak istiyorum. Projemi çalıştırdığımda ve bir kaydı sildiğimde Log tablosunda aşağıdaki şekilde kayıt oluşturuldu.

Message içeriğinde controller tarafında gönderdiğim içerik yer alıyor. Message template gönderdiğim içeriğin template yapısını içeriyor. Level, içeriği information olarak gönderdiğim için“_logger.LogInformation” information olarak gösteriyor. Properties belkide en sevdiğim kısım oldu. Properties’te yer alan xml log kaydınızla ilgili birçok detay içeriyor. ❤️

Benden bu kadar. Okuyan herkese sevgiler..

--

--