| 
                
             | 
        
        
            
                
                    
                        | 
                            ASP.NET Sayfalarını İzleme(Trace) | 
                        
                             | 
                                
                     
                    
                        
                            
	
    
		
            | Gönderiliyor lütfen bekleyin... |   
        
	 
    
 
                         | 
                     
                 
             | 
        
        
            
                
                Bu makalede ASP,NET 
  sayfalarının sayfa bazında ve uygulama bazında izlenmesi ve izlenme çıktılarının 
  görüntülenmesine değineceğim. Ayrıca izleme çıktısına müdahale etmek için kullanılan 
  TraceContext sınıfının işlevini ve üye elemanlarını da inleyeceğiz. 
   
  Profesyonel yazılım geliştiricilerin, uygulama geliştirirken en sık kullandıkları 
  araçlardan birisi hata ayıklama araçlarıdır. Zira büyük çaplı projelerde yazılan 
  kodların içinde kaybolmamak mükün değildir. Üstelik kodunuz eğer bir hata içeriyorsa 
  işin içinden çıkamaz hale bile gelebilirsiniz. Bu tür durumlarda başvurabileceğimiz 
  en güzel araç debugger dediğimiz hata ayıklayıcı araçlardır. ASP.NET, profesyonel 
  yazılım geliştirmeyi web ortamına taşıdığı için eski ASP'de olmayan bir takım 
  hata ayıklayıcı ve gözlemleyici programlara yada diğer bir deyimle araçlara 
  ihtiyaç duyulur. Büyük çaplı ASP.NET uygulamaları geliştirirken sıkça başvuracağımız 
  iki kavram vardır. Bunlardan birincisi ASP.NET sayfalarının izlenmesi(tracing) 
  diğer ise .NET'in sağlamış olduğu hata ayıklama(debug) mekanizmasıdır. 
  Bu makalede ASP.NET sayfalarının izlenmesi anlatılacaktır. ASP.NET'te hata ayıklama 
  işlemi ise bu konudaki bir sonraki makalemin konusu olacaktır. 
   
  ASP.NET 
  Sayfalarının İzlenmesi (Trace) 
   
  Eski ASP mantığında olmayan bir teknik olan sayfa izleme işlemi ASP.NET sayfaları 
  hakkında çeşitli bilgileri geliştiriciye yada istenirse kullanıcıya vermek amacıyla 
  kullanılan bir raporlama biçimidir. Peki bir sayfayı izlerken ne tip bilgiler 
  elde ederiz? Aslında bu sorunun cevabını birazdan daha iyi anlayacağız ancak 
  bir liste halinde ASP.NET sayfalar hakkında elde edebileceğimiz bilgileri sıralamakta 
  fayda var. 
  
  -  İstek Detayları 
    (Request Details ) : Bu bilgiler ile bir sayfanın web sunucudan istenirken 
    kullandığı yöntemler verilir. Örneğin açılan oturumun kimliği,açılan oturuma 
    özel olarak verilen kimlik numarası, şifreleme tekniğinin türü ve isteğin 
    türü gibi bilgiler bu başlığa girer.
 
     
    
   - İzleme Bilgileri 
    (Trace Information) : Sayfaların izlenmesi sırasında, izlenme işlemi ile 
    ilgili bilgiler bu başlık altında toplanır. Örneğin izleme bilgilerinin elde 
    edilme süresi, izleme işleminin kategorisi yada izleme ile ilgili ayrıntılı 
    bilgiler bu başlıktadır.
 
     
    
   - Kontrol Ağacı(Control 
    Tree) : ASP.NET sayfasına ait kaynak dosyada bulunan bütün kontrollerin 
    isimleri, bu kontrollerin dönüştürülme süreleri ve kontrollerle ilgili ViewState 
    boyutunun gösteren bilgiler bu başlık altındadır.
 
     
    
   - Çerez Koleksiyonu 
    (Cookies Collection) : ASP.NET sayfasının sunucudan istendiği anda o sayfada 
    kullanımı geçerli olan ve istekte bulunulan çerezlere(cookie) ait bilgiler 
    bu başlığa girer.
 
     
    
   - Başlık Koleksiyonu 
    (Headers Collection) : ASP.NET sayfasının istekte bulunulması sırasında 
    bu isteğin bir parçası olan HTTP başlık bilgilerinin listesi bu başlık altına 
    girer.
 
     
    
   - Form Koleksiyonu 
    (Form Collection) : İstekte bulunulan sayfaya POST metodu ile gönderilmiş 
    değişkenler ve değişkenlerin değerleri bu başlık altına girer.
 
     
    
   - Sorgu Dizgeleri 
    Koleksiyonu (Querystring Collection) : İstekte bulunulan sayfaya GET metodu 
    ile gönderilmiş değişkenler ve değişkenlerin değerleri bu başlık altına girer.
 
     
    
   - Sunucu Değişkenleri 
    (Server Variables) : İstekte bulunulan sayfaya ilişkin sunucu değişkenlerin 
    tamamı bu kapsama girer. ASP kullananların bildiği gibi REMOTE_HOST, REMOTE_ADDR 
    gibi değişkenler sunucu değişkenleridir. 
 
     
     
 
ASP.NET'te İki 
  tür izleme metodu vardır. İlk önce sayfa bazında izleme işleminin nasıl olduğunu 
  inceleyeceğiz. Ardından uygulama bazında izleme işlemine geçeceğiz. 
   
  Sayfa 
  Bazında İzleme 
   
  Bir sayfaya ilişkin izleme bilgilerini görüntülemek için ilgili sayfadaki @Page 
  yönergesinin Trace niteliğini sayfaya eklememiz gerekir. Daha önce bilgisayarınızda 
  bulunan bir ASP.NET sayfasını yada Visual Studio.NET i kullanarak basit bir 
  ASP.NET sayfası oluşturup @Page yönergesinin bulunduğu (directive) satırı aşağıdaki 
  gibi değiştirin.  
   
  Not: Eğer trace özelliğini true olacak şekilde değiştirmezsek sayfa izleme çıktılarını 
  elde edemeyiz. 
   
  
   
   
     
      <%@ 
        Page trace="true" language="c#" 
        Codebehind="default.aspx.cs" Inherits="Uygulama.Form1" 
        AutoEventWireup="false" %>
  
     | 
   
   
 
Şimdi sayfaya istekte 
  bulunarak izleme çıktısının orjinal sayfamıza nasıl eklendiğini inceleyelim. 
  Aşağıdaki ekran görüntüsü sayfa izleme çıktısının benim bilgisayarımdaki bir 
  uygulamaya ait default.aspx sayfasının izleme çıktılarını göstermektedir.
  
  
   
  Sayfa bazında izleme işlemi genellikle geliştiriciye kolaylık sağlanması amacı 
  ile yapılmaktadır. Bir sayfayı izlemeye açtığınızda sayfaya istekte bulunan 
  bütün kullanıcılar izleme çıktılarını görebilir. Kullanıcıların izleme çıktısını 
  görmesini istemiyorsanız birazdan göreceğimiz uygulama bazında izleme işlemini 
  sadece yerel makine için(localhost) sınırlandırabilirsiniz. 
   
  Yukarıdaki ekran görüntüsünden de görüldüğü üzere herhangi bir kod yazmadan 
  sayfanın bütün istek(request) bilgilerini düzgün bir şekilde raporladık. Bu 
  işlem ilk başta ne işimize yarayacak diye endişe edebilirsiniz. Bu endişede 
  şimdilik haklı olabilirsiniz ancak büyük bir ASP.NET uygulaması projesinde çalıştığınızda 
  özellikle de birden fazla kişi ile beraber aynı proje üzerinde çalışıyorsanız 
  izleme işleminin sağladığı kolaylıkları göreceksiniz. 
   
  Uygulama 
  Bazında İzleme 
   
  İzleme işlemlerinin içinde en çok kullancağınız yöntem bir uygulamayı tümüyle 
  izlemek olacaktır. Üstelik bu yöntem yukarıda anlatılan sayfa bazında izleme 
  yöntemine göre bir çok ek özellik içerir. Bir uygulamayı izlemek için uygulamanın 
  bulunduğu klasörde bulunan web.config isimli yapılandırma dosyasında 
  değişiklik yapmak gerekecektir.  
   
  web.config dosyasını açıp aşağıdaki gibi değiştirin. 
  
  
   
   
     
      
        enabled="true" 
        requestLimit="20" 
        pageOutput="true" 
        traceMode="SortByTime" 
        localOnly="true" 
        />
  
     | 
   
   
 
Not: Yukarıda web.config 
  dosyasına ilişkin yapılan değişiklikler  elemanının içinde 
  kümelenmiş  elemanı içinde yapılmalıdır. Yani Bu değişiklik 
  aşağıdaki gibi olmalıdır. 
   
  
  
   
   
     
       
              
                . 
                . 
                .  
                
                enabled="true" 
                requestLimit="20" 
                pageOutput="true" 
                traceMode="SortByTime" 
                localOnly="true" 
                /> 
                . 
                . 
                .  
              
         
  
     | 
   
   
 
  
  Visual Studio.NET ile yeni bir ASP.NET uygulaması oluşturduğunuzda web.config 
  dosyasında bulunan trace elemanının enabled niteliği false değerdedir. 
  Bu niteliği true yapmanız uygulama düzeyinde izleme işlemini başlatmış olduğunuz 
  anlamına gelir. 
   
  Web.config dosyasında yapılan değişiklikte en önemli nokta trace elemanının 
  localOnly niteliğidir. Bu nitelik true olduğu takdirde uygulama düzeyinde 
  izleme işlemi çıktısının sadece geliştiricinin kullandığı makinede görüntülenebileceği 
  anlamına gelir. Varsayılan olarak bu nitelik true değerdedir. İzleme bilgilerinin 
  kullanıcılar tarafından görülmesini istemiyorsanız bu niteliğin değerini false 
  yapmanız gerekir.  
   
  Trace elemanının diğer niteliklerine ve alabileceği değerlere bakacak olursak; 
  
  
  - enabled 
    niteliği : Uygulama bazındaki izlemenin aktif olup olmadığını belirtir. Bu 
    özellik ya true yada false değer almalıdır.
 
     
    
   - pageOutput 
    niteliği : İzleme çıktılarının her sayfaya eklenip eklenmeyeceğini belirtir. 
    Eğer bu nitelik true değerde ise izleme çıktısı web.config dosyasını ilgilendiren 
    bütün ASP.NET dosyalarına eklenir. Böylece her sayfa için otomatik olarak 
    sayfa düzeyi izleme işlemi yapmış oluruz. Eğer bu nitelik false değerde ise 
    izleme çıktılarına birazdan göreceğimiz özel bi URL'yi kullanarak erişebiliriz.
 
     
    
   - requestLimit 
    niteliği : Uygulama düzeyinde izleme yapılacağı sırada izleme işleminin kaç 
    sayfa üzerinde olacağını belirtir. Bu nitelik varsayılan olarak 10 değerindedir. 
    Yani en faz 10 isteğe karşı izleme yapılabilir. Uygulama içierisinde sunucudan 
    yapılan istek sayısı 10'u geçtiğinde artık izleme işlemi yapılmaz. İzleme 
    işleminin tekrar başlaması için eski izleme bilgilerinin birazdan göreceğimiz 
    yöntemle silinmesi gerekir. Bu yüzden bu niteliğin değerini ihtiyacımız ölüçüsünde 
    ayarlamlıyız.
 
     
    
   - traceMode 
    niteliği : Sunucudan yapılan isteklerin görüntüleneceği zaman ekranda sıralama 
    şeklini belirtir. Bu nitelik iki değer alabilir. Birincisi SortByTime 
    değeridir. Bu değer ile izleme bilgileri izlenme işleminin yapıldığı zamana 
    göre sıralanır. Diğer bir değer olan SortByCategory ise izleme bilgilerini 
    kategoriye göre alfabetik olarak sıralar.
 
 
 
Bu bilgilerden sonra uygulama bazında izleme çıktılarının nasıl görüntüleyebileceğimize 
bakalım. Bunun için uygulama altında özel bir URL çağırmamız gerekir. Bu URL'nin 
yolu aşağıdaki gibidir. 
 
http://localhost/UygulamaAdı/trace.axd 
 
trace.axd uygulama altında bulunan fiziksel bir dosya değildir. Web sunucudan 
böyle bir istek yapıldığında uygulama ile ilgili izleme çıktılarının web.config 
dosyasındaki ayarlara göre görüntüleneceği anlamına gelir. 
 
Aşağıda trace.axd takma URL si çalıştırılarak elde edilmiş bir görüntü mevcuttur. 
 
   
 
Yukarıdaki ekranda uygulamaya ait sayfalara yapılan isteklerin tarihleri, istekte 
bulunulan dosya ismi ve istek metodu görülmektedir. Yapılan isteklerle ilgili 
detaylı bilgiyi elde etmek için "View Details" bağlantısına tıklayın. 
Bu bağlantıya tıkladıktan sonra yukarıda anlatmış olduğum sayfa düzeyinde izleme 
bilgilerini görürsünüz.  
 
İzleme kapasitesi dolduysa yukarıdaki ekran görüntüsünde kırmızı çerçeve içine 
alınan "clear current trace" bağlantısına tıklayın. Bu bağlantıya tıkladığınızda 
o ana kadar izlenmiş bütün bilgiler silinecektir. Ekran görüntüsü ile ilgili diğer 
önemli nokta ise izleme sınırına ne kadar yakınlaştığınızı gösteren "Remaining 
: 14" yazısıdır.  
 
İzleme Çıktılarına Müdahele Etmek 
 
İzleme işlemini en etkin kılan ve esnek olmasını sağlayan en önemli özellik izleme 
çıktısına programlama yolu ile müdahale edebilmemizdir. İzleme çıktısına yeni 
mesajlar eklemek için TraceContext sınıfının Write() yada Warn() metodu 
kullanılır. Bu iki metod arasındaki tek fark Warn() ile yazılan izleme çıktılarının 
kırmızı renkle yazılmasıdır. Dolayısıyla Warn() metodu ile yazılan mesajlar uyarı 
niteliği taşımaktadır. Write() metodunu aşağıdaki 3 biçimde çağırabiliriz.  
 
1- void TraceContext.Write(mesaj)  
 
    İzleme çıktısına bir mesaj ekler. 
 
2- void TraceContext.Write(kategori, mesaj) 
    
    İzleme çıktısına bizim belirleyeceğimiz bir kategoride yeni 
bir mesaj ekler. 
 
3- void TraceContext.Write(kategori, mesaj, HataBilgisi)  
 
    İzleme çıktısına bizim belirleyeceğimiz bir kategoride 
yeni bir mesajı bir hata bilgisi ile ekler. HataBilgisi, System.Exception türündendir. 
 
Not: Warn() metodunun da Write() gibi 3 değişik kullanım biçimi vardır. 
 
 
TraceContext sınıfının iki önemli elemanı daha vardır. Bu elemanlar IsEnabled 
ve TraceMode özellikleridir. IsEnabled özelliği bir sayfaya ilişkin izleme 
işleminin aktif olup olmadığını veren bool türünden bir elemandır. TraceMode özelliği 
ise TraceMode türünden bir numaralandırma(enum) olup izlenme çıktılarının 
ne şekilde görüntüleneceğini belirtir. TraceMode numaralandırması 3 sembol içerir. 
Bu semboller Default, SortByCategory ve SortByTime şeklindedir. 
Bu özelliğin hem get hemde set bloğu bildirilmiş olduğu için bu özellik hem yazılabilir 
hem de okunabilirdir. 
 
Bir ASP.NET sayfasını temsil eden Page sınıfının üye elemanı olan Trace 
özelliği de TraceContext türündendir. Dolayısıyla Trace özelliğinin Write() yada 
Warn() metodunu kullanarak ilgili ASP.NET sayfasının izleme çıktısına yeni mesajlar 
ekleyebiliriz.  
 
Kaynak kodda sayfanın Page_Load() metoduna aşağıdaki deyimi ekleyip izleme çıktısının 
ne şekilde değiştiğine bakalım.  
 
 
   
   
     
       private 
        void Page_Load(object sender, System.EventArgs e) 
        { 
            Trace.Warn("YeniKategori","Hata 
        mesaji"); 
        }
  
     | 
   
   
 
 
Sayfayı çağırdığımızda izleme çıktısının aşağıdaki gibi değiştiğini göreceksiniz. 
 
 
 
   
    | Trace 
      Information | 
   
   
    | Category | 
    Message | 
    From 
      First(s) | 
    From 
      Last(s) | 
   
   
    | aspx.page | 
    Begin 
      Init | 
      | 
     | 
   
   
    | aspx.page | 
    End 
      Init | 
    0.000235 | 
    0.000235 | 
   
   
    | YeniKategori | 
    Hata 
      mesajı | 
    0,000361 | 
    0.000126 | 
   
   
    | aspx.page | 
    Begin 
      PreRender | 
    0.000609 | 
    0.000248 | 
   
 
  
Bu yazının sonuna geldik. ASP.NET ile ilgili bir sonraki yazımda hata ayıklama(Debugging) 
işlemine değineceğim.  
 
Kaynaklar  
 
Professioanl ASP.NET (WROX)  
Step by Step ASP.NET(Microsoft Press) 
                
                Makale: 
                ASP.NET Sayfalarını İzleme(Trace) ASP.NET Sefer Algan 
             | 
        
        
            | 
             | 
        
        
            | 
                 
             | 
        
        
            
                
                
                    
                        - 
                            
                        
 
                        - 
                            
Eklenen Son 10  
                         
                        - 
                            
Bu Konuda Geçmiş 10 
                         
                     
                    
                        
                            Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
                         
                        
                            Son Eklenen 10 Makale Yükleniyor
                         
                        
                            Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
                         
                     
                 
                
                
             | 
        
        
            | 
                
             |