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.
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:
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ı 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ı.
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;
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.
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.