|
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
|
|