﻿
{"id":17784,"date":"2020-09-09T07:08:51","date_gmt":"2020-09-09T07:08:51","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=17784"},"modified":"2020-09-09T07:09:53","modified_gmt":"2020-09-09T07:09:53","slug":"asp-net-core-signalr-serisi-4-signalr-log-seviyeleri","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/asp-net-core-signalr-serisi-4-signalr-log-seviyeleri\/","title":{"rendered":"Asp.NET Core &#8211; SignalR Serisi #4 &#8211; SignalR Log Seviyeleri"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde SignalR vas\u0131tas\u0131yla client ile server aras\u0131nda etkile\u015fim kurulurken arada nelerin oldu\u011funa dair bizlere bilgi veren Log mekanizmas\u0131ndan ve seviyelerinin neler oldu\u011fundan bahsedece\u011fiz.<\/p>\n<h4>Log seviyeleri nelerdir?<\/h4>\n<p>\u00d6ncelikle ne t\u00fcr log tan\u0131mlamalar\u0131 yap\u0131lm\u0131\u015f hassasiyet derecelerine g\u00f6re a\u015fa\u011f\u0131da tek tek inceleyelim. <\/p>\n<ul>\n<li><strong>Trace(\u0130zleme)<\/strong><br \/>\n\u00c7ok d\u00fc\u015f\u00fck \u00f6nem derecesine sahip tan\u0131 mesajlar\u0131 i\u00e7in kullan\u0131lan log seviyesidir. Mesajlar\u0131 hassas uygulama verileri i\u00e7erebilir ve bu nedenle production ortam\u0131nda etkile\u015ftirilmesi \u00f6nerilmemektedir. T\u00fcm bunlara ra\u011fmen a\u00e7\u0131k arayla en yayg\u0131n kullan\u0131lan log seviyesidir. Do\u011fru yo\u011funlukta kullanmak yaz\u0131l\u0131m a\u00e7\u0131s\u0131ndan daha s\u00fcrd\u00fcr\u00fclebilirdir.<br \/>\n<em style=\"font-size:11px;color:blue;\">Misal : Credentials: {&#8220;User&#8221;:&#8221;someuser&#8221;, &#8220;Password&#8221;:&#8221;P@ssword&#8221;}<\/em>\n<\/li>\n<li><strong>Debug(Hata Ay\u0131klama)<\/strong><br \/>\nD\u00fc\u015f\u00fck \u00f6nem dereceli tan\u0131 mesajlar\u0131 i\u00e7in kullan\u0131lan log seviyesidir. Geli\u015ftirme ve hata ay\u0131klama s\u0131ras\u0131nda k\u0131sa vadeli yararl\u0131l\u0131\u011f\u0131 olan bilgiler i\u00e7indir. Bilgiye her daim sahip olunmak istendi\u011fi amma velakin production esnas\u0131nda g\u00fcvenlik a\u00e7\u0131s\u0131ndan bu bilgilerin pek \u00f6nemsenmedi\u011fi durumlarda kullan\u0131labilir.<\/p>\n<p>Debug mesajlar\u0131n kullan\u0131lmas\u0131 uzmanlar taraf\u0131ndan \u00f6nerilmemektedir. Debug mesajlar\u0131n\u0131 kullanmak zamanla i\u015fe yaramaz bir y\u0131\u011f\u0131n olu\u015fturur. Bunun aksine Trace mesajlar\u0131n\u0131n s\u00fcrekli olarak filtrelenmesi geli\u015ftiriler a\u00e7\u0131s\u0131ndan daha tercih edilebilirdir.<br \/>\n<em style=\"font-size:11px;color:blue;\">Misal : Entering method Configure with flag set to true.<\/em>\n<\/li>\n<li><strong>Info(Bilgi)<\/strong><br \/>\nBilgilendirici tan\u0131 mesajlar\u0131 i\u00e7in olan seviyedir. Uygulaman\u0131n genel ak\u0131\u015f\u0131n\u0131 izler.<br \/>\n<em style=\"font-size:11px;color:red;\">Hizmet ba\u015flatma\/durdurma(Service start\/stop), Yap\u0131land\u0131rma varsay\u0131mlar\u0131(Configuration assumptions) vs.<\/em><br \/>\n<em style=\"font-size:11px;color:blue;\">Misal : Request received for path \/api\/todo<\/em>\n<\/li>\n<li><strong>Warn(Uyar\u0131)<\/strong><br \/>\n\u00d6nemli olmayan bir sorunu g\u00f6steren tan\u0131 mesajlar\u0131 i\u00e7in olan seviyedir. Uygulama ak\u0131\u015f\u0131ndaki anormal veya beklenmeyen olaylar\u0131 g\u00f6sterir. Bunlar, uygulaman\u0131n durmas\u0131na neden olmayan ancak  sonradan do\u011fabilecek b\u00fcy\u00fck bir hatan\u0131n ya da hatalar\u0131n \u015fimdiden engellenmesi i\u00e7in ara\u015ft\u0131r\u0131lmas\u0131 gerekebilecek hatalar\u0131 veya di\u011fer ko\u015fullar\u0131 i\u00e7erebilir.<br \/>\n<em style=\"font-size:11px;color:red;\">Birincil sunucudan yedek sunucuya ge\u00e7mek(Such as switching from a primary to backup server), \u0130\u015flemin yeniden denenmesi(Retrying an operation), \u0130kincil verilerin eksik olmas\u0131(Missing secondary data) vs.<\/em><br \/>\n<em style=\"font-size:11px;color:blue;\">Misal : FileNotFoundException for file quotes.txt.<\/em>\n<\/li>\n<li><strong>Error(Hata)<\/strong><br \/>\nMevcut i\u015flemdeki bir ar\u0131zay\u0131 g\u00f6steren ve te\u015fhis gerektiren mesajlar i\u00e7in olan seviyedir.<br \/>\n<em style=\"font-size:11px;color:red;\">Gerekli bir dosyay\u0131 a\u00e7amama(Can&#8217;t open a required file), Eksik veriler(Missing data) vs.<\/em><br \/>\n<em style=\"font-size:11px;color:blue;\">Misal : Cannot insert record due to duplicate key violation.<\/em>\n<\/li>\n<li><strong>Fatal\/Critical(\u00d6nemli\/Kritik)<\/strong><br \/>\nT\u00fcm uygulamay\u0131 sonland\u0131racak yahut kapatmaya zorlayacak bir ar\u0131zay\u0131 g\u00f6steren ve kesinlikle acilen te\u015fhis gerektiren mesajlar i\u00e7in olan seviyedir.<br \/>\n<em style=\"font-size:11px;color:red;\">Veri bozulmas\u0131\/kayb\u0131 durumu vs.<\/em><br \/>\n<em style=\"font-size:11px;color:blue;\">Misal : Data loss scenarios, out of disk space.<\/em>\n<\/li>\n<\/ul>\n<blockquote><p>Asp.NET Core Web API ya da MVC uygulamalar\u0131ndaki &#8216;appsettings.json&#8217; dosyas\u0131nda bulunan &#8216;Logging&#8217; i\u00e7erisinde &#8216;Default&#8217; olarak &#8216;Information&#8217; tan\u0131ml\u0131d\u0131r. Bu information ve \u00fczerindeki loglar\u0131n dinlenece\u011fi anlam\u0131na gelmektedir.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/Asp.NET-Core-SignalR-Serisi-4-SignalR-Log-Seviyeleri.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/Asp.NET-Core-SignalR-Serisi-4-SignalR-Log-Seviyeleri.jpg\" alt=\"Asp.NET Core - SignalR Serisi #4 - SignalR Log Seviyeleri\" width=\"459\" height=\"217\" class=\"aligncenter size-full wp-image-17790\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/Asp.NET-Core-SignalR-Serisi-4-SignalR-Log-Seviyeleri.jpg 459w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/Asp.NET-Core-SignalR-Serisi-4-SignalR-Log-Seviyeleri-300x142.jpg 300w\" sizes=\"auto, (max-width: 459px) 100vw, 459px\" \/><\/a>\n<\/p><\/blockquote>\n<h4>SignalR Logging Konfig\u00fcrasyonu<\/h4>\n<p>SignalR&#8217;da logging konfig\u00fcrasyonunu sa\u011flayabilmek ve istedi\u011finiz seviyeyi belirleyebilmek i\u00e7in a\u015fa\u011f\u0131daki gibi &#8216;configureLogging&#8217; metodu kullan\u0131lmal\u0131d\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n         var connection = new signalR.HubConnectionBuilder()\r\n            .configureLogging(signalR.LogLevel.Information)\r\n            .withUrl(&quot;https:\/\/localhost:5001\/myhub&quot;)\r\n            .build();\r\n<\/pre>\n<p>&#8216;configureLogging&#8217; metoduna &#8216;signalR.LogLevel&#8230;&#8217; komutu ile hangi log seviyesinden itibaren bir dinleme yap\u0131laca\u011f\u0131n\u0131 bildirerek o seviyenin \u00fczerinde t\u00fcm ad\u0131mlar\u0131 console&#8217;a yazd\u0131rabilirsiniz.<\/p>\n<p>\u00d6rne\u011fin yukar\u0131daki kod blo\u011funda Information ve \u00fcst\u00fcndeki seviyelerin console&#8217;a yazd\u0131r\u0131laca\u011f\u0131 bildirilmektedir.<br \/>\n<a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/Asp.NET-Core-SignalR-Serisi-4-SignalR-Log-Seviyeleri-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/Asp.NET-Core-SignalR-Serisi-4-SignalR-Log-Seviyeleri-1.jpg\" alt=\"Asp.NET Core - SignalR Serisi #4 - SignalR Log Seviyeleri\" width=\"632\" height=\"103\" class=\"aligncenter size-full wp-image-17794\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/Asp.NET-Core-SignalR-Serisi-4-SignalR-Log-Seviyeleri-1.jpg 632w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/Asp.NET-Core-SignalR-Serisi-4-SignalR-Log-Seviyeleri-1-300x49.jpg 300w\" sizes=\"auto, (max-width: 632px) 100vw, 632px\" \/><\/a><br \/>\nBenzer mant\u0131kla a\u015fa\u011f\u0131daki \u00f6rnekte Trace ve \u00fcst\u00fcndeki seviyelerin yazd\u0131r\u0131lmas\u0131n\u0131 sa\u011flayacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n         var connection = new signalR.HubConnectionBuilder()\r\n            .configureLogging(signalR.LogLevel.Trace)\r\n            .withUrl(&quot;https:\/\/localhost:5001\/myhub&quot;)\r\n            .build();\r\n<\/pre>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/Asp.NET-Core-SignalR-Serisi-4-SignalR-Log-Seviyeleri-2.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/Asp.NET-Core-SignalR-Serisi-4-SignalR-Log-Seviyeleri-2.jpg\" alt=\"Asp.NET Core - SignalR Serisi #4 - SignalR Log Seviyeleri\" width=\"829\" height=\"178\" class=\"aligncenter size-full wp-image-17795\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/Asp.NET-Core-SignalR-Serisi-4-SignalR-Log-Seviyeleri-2.jpg 829w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/Asp.NET-Core-SignalR-Serisi-4-SignalR-Log-Seviyeleri-2-300x64.jpg 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/Asp.NET-Core-SignalR-Serisi-4-SignalR-Log-Seviyeleri-2-768x165.jpg 768w\" sizes=\"auto, (max-width: 829px) 100vw, 829px\" \/><\/a><\/p>\n<p>B\u00f6ylece client ile server aras\u0131ndaki etkile\u015fim s\u00fcrecinde ad\u0131m ad\u0131m nelerin ya\u015fand\u0131\u011f\u0131n\u0131 g\u00f6rebilir ve daha efektif bir geli\u015ftirme ger\u00e7ekle\u015ftirebilirsiniz.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<p>Not : \u00d6rnek uygulamay\u0131 indirmek i\u00e7in <a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2020\/09\/SignalRExampleUI-1.zip\">buraya<\/a> t\u0131klay\u0131n\u0131z.<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu i\u00e7eri\u011fimizde SignalR vas\u0131tas\u0131yla client ile server aras\u0131nda etkile\u015fim kurulurken arada nelerin oldu\u011funa dair bizlere bilgi veren Log mekanizmas\u0131ndan ve seviyelerinin neler oldu\u011fundan bahsedece\u011fiz. Log seviyeleri nelerdir? \u00d6ncelikle ne t\u00fcr log tan\u0131mlamalar\u0131 yap\u0131lm\u0131\u015f&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":17653,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3760],"tags":[3781,3775,3779,3778,3776,3780,3783,3782,3774,3777],"class_list":["post-17784","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-signalr","tag-critical","tag-debug","tag-error","tag-fatal","tag-info","tag-signalr-log-level","tag-signalr-loggin-configuration","tag-signalr-logging-konfigurasyonu","tag-trace","tag-warn"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/17784","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=17784"}],"version-history":[{"count":10,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/17784\/revisions"}],"predecessor-version":[{"id":17798,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/17784\/revisions\/17798"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/17653"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=17784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=17784"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=17784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}