Asp.NET Core – SignalR Serisi #4 – SignalR Log Seviyeleri

Merhaba,

Bu içeriğimizde SignalR vasıtasıyla client ile server arasında etkileşim kurulurken arada nelerin olduğuna dair bizlere bilgi veren Log mekanizmasından ve seviyelerinin neler olduğundan bahsedeceğiz.

Log seviyeleri nelerdir?

Öncelikle ne tür log tanımlamaları yapılmış hassasiyet derecelerine göre aşağıda tek tek inceleyelim.

  • Trace(İzleme)
    Çok düşük önem derecesine sahip tanı mesajları için kullanılan log seviyesidir. Mesajları hassas uygulama verileri içerebilir ve bu nedenle production ortamında etkileştirilmesi önerilmemektedir. Tüm bunlara rağmen açık arayla en yaygın kullanılan log seviyesidir. Doğru yoğunlukta kullanmak yazılım açısından daha sürdürülebilirdir.
    Misal : Credentials: {“User”:”someuser”, “Password”:”P@ssword”}
  • Debug(Hata Ayıklama)
    Düşük önem dereceli tanı mesajları için kullanılan log seviyesidir. Geliştirme ve hata ayıklama sırasında kısa vadeli yararlılığı olan bilgiler içindir. Bilgiye her daim sahip olunmak istendiği amma velakin production esnasında güvenlik açısından bu bilgilerin pek önemsenmediği durumlarda kullanılabilir.

    Debug mesajların kullanılması uzmanlar tarafından önerilmemektedir. Debug mesajlarını kullanmak zamanla işe yaramaz bir yığın oluşturur. Bunun aksine Trace mesajlarının sürekli olarak filtrelenmesi geliştiriler açısından daha tercih edilebilirdir.
    Misal : Entering method Configure with flag set to true.

  • Info(Bilgi)
    Bilgilendirici tanı mesajları için olan seviyedir. Uygulamanın genel akışını izler.
    Hizmet başlatma/durdurma(Service start/stop), Yapılandırma varsayımları(Configuration assumptions) vs.
    Misal : Request received for path /api/todo
  • Warn(Uyarı)
    Önemli olmayan bir sorunu gösteren tanı mesajları için olan seviyedir. Uygulama akışındaki anormal veya beklenmeyen olayları gösterir. Bunlar, uygulamanın durmasına neden olmayan ancak sonradan doğabilecek büyük bir hatanın ya da hataların şimdiden engellenmesi için araştırılması gerekebilecek hataları veya diğer koşulları içerebilir.
    Birincil sunucudan yedek sunucuya geçmek(Such as switching from a primary to backup server), İşlemin yeniden denenmesi(Retrying an operation), İkincil verilerin eksik olması(Missing secondary data) vs.
    Misal : FileNotFoundException for file quotes.txt.
  • Error(Hata)
    Mevcut işlemdeki bir arızayı gösteren ve teşhis gerektiren mesajlar için olan seviyedir.
    Gerekli bir dosyayı açamama(Can’t open a required file), Eksik veriler(Missing data) vs.
    Misal : Cannot insert record due to duplicate key violation.
  • Fatal/Critical(Önemli/Kritik)
    Tüm uygulamayı sonlandıracak yahut kapatmaya zorlayacak bir arızayı gösteren ve kesinlikle acilen teşhis gerektiren mesajlar için olan seviyedir.
    Veri bozulması/kaybı durumu vs.
    Misal : Data loss scenarios, out of disk space.

Asp.NET Core Web API ya da MVC uygulamalarındaki ‘appsettings.json’ dosyasında bulunan ‘Logging’ içerisinde ‘Default’ olarak ‘Information’ tanımlıdır. Bu information ve üzerindeki logların dinleneceği anlamına gelmektedir.
Asp.NET Core - SignalR Serisi #4 - SignalR Log Seviyeleri

SignalR Logging Konfigürasyonu

SignalR’da logging konfigürasyonunu sağlayabilmek ve istediğiniz seviyeyi belirleyebilmek için aşağıdaki gibi ‘configureLogging’ metodu kullanılmalıdır.

         var connection = new signalR.HubConnectionBuilder()
            .configureLogging(signalR.LogLevel.Information)
            .withUrl("https://localhost:5001/myhub")
            .build();

‘configureLogging’ metoduna ‘signalR.LogLevel…’ komutu ile hangi log seviyesinden itibaren bir dinleme yapılacağını bildirerek o seviyenin üzerinde tüm adımları console’a yazdırabilirsiniz.

Örneğin yukarıdaki kod bloğunda Information ve üstündeki seviyelerin console’a yazdırılacağı bildirilmektedir.
Asp.NET Core - SignalR Serisi #4 - SignalR Log Seviyeleri
Benzer mantıkla aşağıdaki örnekte Trace ve üstündeki seviyelerin yazdırılmasını sağlayacaktır.

         var connection = new signalR.HubConnectionBuilder()
            .configureLogging(signalR.LogLevel.Trace)
            .withUrl("https://localhost:5001/myhub")
            .build();

Asp.NET Core - SignalR Serisi #4 - SignalR Log Seviyeleri

Böylece client ile server arasındaki etkileşim sürecinde adım adım nelerin yaşandığını görebilir ve daha efektif bir geliştirme gerçekleştirebilirsiniz.

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Not : Örnek uygulamayı indirmek için buraya tıklayınız.

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. 09 Eylül 2020

    […] Asp.NET Core – SignalR Serisi #4 – SignalR Log Seviyeleri […]

  2. 17 Kasım 2020

    […] arada tüm hata seviyelerini detaylıca ele aldığım SignalR Log Seviyeleri başlıklı makalemi […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*