Asp .Net Core SignalR 3 - SignalR'da Loglama Mekanizması

Asp .Net Core SignalR 3 - SignalR'da Loglama Mekanizması

Blog Asp .Net Core SignalR 3 - SignalR'da Loglama Mekanizması

Asp .Net Core SignalR 3 - SignalR'da Loglama Mekanizması

SelamünAleyküm, geçtiğimiz yazıda SignalR Nasıl Çalışır? sorusuna cevap vermiştik ve başlangıç seviyesinde bir sohbet uygulaması yapmıştık bu yazıda ise, SignalR ile Loglama Mekanizmasını dilimizin döndüğü kadarıyla inceleyeceğiz.

Server Taraflı Loglama

SignalR, Asp .Net Core'un bir parçası olduğundan Asp .Net Core'un Loglama ( Kayıt/Günlük ) sistemini kullanır. Asp .Net Core SignalR yapılandırmasında çok azınlıktaki bir bilgiyi log'da kaydeder.

SignalR'ın nasıl çalıştığını ve projelerimizin nasıl tepkiler verdiğini anlamamız için, Asp .Net Core'un içinde gelen ( YGK ) Yerleşik Günlükçü Kategorilerini ( Built-in Logger Categories ) kullanırız.

SignalR'ın iki adet YGK'sı bulunuyor:

  • Microsoft.AspNetCore.SignalR: Hub Protokolleri, Hub'ları tetikleme/etkinleştirme, çağırma yöntemleri ve Hub ile ilgili diğer etkinliklerle ilgili loglar için kullanılır.
  • Microsoft.AspNetCore.Http.Connections: WebSockets, LongPolling, Server-Sent Events ve alt düzey SignalR altyapası gibi loglar için kullanılır.

Bu YGK'ların herhangi birini kullanarak, projemizin verdiği tepkileri, davranışlarını ayrıntılarıyla log'a kaydedebiliriz.

Misalen, appsettings.json dosyasında, Logging'deki LogLevel bölümünü aşağıdaki gibi değiştirelim.

{
    "Logging": {
        "LogLevel": {
            "Default": "Debug",
            "System": "Information",
            "Microsoft": "Information",
            "Microsoft.AspNetCore.SignalR": "Debug",
            "Microsoft.AspNetCore.Http.Connections": "Debug"
        }
    }
}

Bunu yapılandırmayı program.cs içindeki CreateWebHostBuilder'da da yapılandırabiliriz.

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureLogging(logging =>
        {
            logging.AddFilter("Microsoft.AspNetCore.SignalR", LogLevel.Debug);
            logging.AddFilter("Microsoft.AspNetCore.Http.Connections", LogLevel.Debug);
        })
        .UseStartup<Startup>();
//.Net Core 6.0 ve sonraki sürümler ile beraber kullanımı.

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseLogging();
    app.ConfigureLogging(logging =>
    {
        logging.AddFilter("Microsoft.AspNetCore.SignalR", LogLevel.Debug);
        logging.AddFilter("Microsoft.AspNetCore.Http.Connections", LogLevel.Debug);
    });
 
}

Tabi yukarıdaki kullanımları, Json tabanlı bir yapılandırma yapmıyorsak  bu şekilde ayarlama yapabiliriz.

Client Taraflı Loglama

Client taraflı loglamada porjemizi javascript (JQuery) üzerinden ilereleteceğiz (diğerlerinin mantığı birbirine benzerdir.)

Misalen, Asp .Net Core projesi oluşturalım. Genelde Asp .Net Core Api ya da MVC projelerindeki "appsetting.json" dosyasında olan Logging içerisinde Defalut olarak Information olarak tanımlanmakta. Bu da informtaion ve üzerindeki logların dinleneceği anlamına gelir.

{
  "Loggin": {
    "LogLevel": {
      "Defalut": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts" : "*"
}

SignalR’da logging konfigürasyonunu yapabilmek için aşağıdaki gibi ‘configureLogging’ metodu kullanmalıyız.

let connection = new signalR.HubConnectionBuilder()
    .withUrl("https://localhost:44331/messagehub")
    .configureLogging(signalR.LogLevel.Information)
    .build();

Yukarıdaki kodda, configureLogging() yöntemi kullanılarak signalR kategorisi için Information düzeyini ayarladık. Bu, signalR kategorisine ait tüm günlük mesajların Information düzeyinde kaydetmemizi sağladı.

Log Düzeyleri

Sadece SignalR'da değil Asp .Net Core bünyesinde bulunan bütün alt yapılar içinde geçerli olan bazı hassasiyet dereceleri bulunmakta. Bu hassasiyet dereceleri şu şekilde sırılanabilir;

  1. None: Hiçbir veri log'a kaydedilmez.
  2. Trace ( İzleme ): Neredeyse en düşük hassasiyet derecesine sahiptir. Genelde sorunları teşhis etme amaçlı kullanılır, pek önerilmesede en yaygın kullanılan loglama türüdür.
  3. Debug ( Hata Ayıklama ): Düşük hassasiyet derecesine sahiptir. Genelde geliştirme ortamında hata ayıklama süreçlerinde kısa vadeli fayda sağlar. Tabi zamanla Debug mesajlarını kullanmak zamanla külfet haline geleceğinden Trace kullanımı geliştiriciler tarafından daha fazla tercih ediliyor.
  4. Information ( Bilgi ): Bilgilendirme amaçlı tanı mesajları için kullanılır.
  5. Warning ( Uyarı ): Şimdilik önemli olmayan ve projenin olağan akışına engel olmayan sorunların tanı mesajlarını gösterir. Her ihtimale karşı bu sorunların düzletilmesi için çıkan mesajlardır.
  6. Error ( Hata ): Mevcut işlemdeki gerçekleşen arızayı gösteren ve teşhisinin gerektiği mesajlar için kullanılır.
  7. Fatal - Critical ( Önemli - Kritik ): Tüm projeyi sonlandıracak veya kapatmaya zorlayacak bir sournu gösteren ve ivedilikle teşhisinin gerektiği mesajlar için kullanılır.

Bu şeklide bu yazımızın sonuna geldik, bu şeklilde Asp .Net Core SignalR da Loglama Mekanizmasını incelemiş olduk. Sonraki yazımızda yine SignalR üzreniden ilerleyeceğiz. Bu yazıya ilişkin projeyi github adresi üzerinden indirebilirsiniz. ilgilenenlerin faydalanması ümidiyle.

Hiç yorum Yorum yapılmamış, İlk yorumu sen yap.

Yorum Yap


Bize Ulaşın

Merkez / Mardin

support@technoguide.com.tr

+90 551 859 8721

Haber Bültenİ

Haber Bültenİmİze Kaydolun

Yazılım, teknoloji ve daha fazlası için bizi takip edin.

© Techno Guide. Tüm Hakları Saklıdır.

HTML Codex Tasarımıdır.