2008-09-18 18 views
9

JS ad alanını iyi bilinen kayıt kütüphaneleri için inceleyen bir "evrensel" hata ayıklama günlüğü oluşturma işlevi oluşturmak istiyorum. Kundakçı yüklüyseJavascript'ten hangi hata ayıklama günlüğü araçları kullanılabilir?

var console = window['console']; 
if (console && console.log) { 
    console.log(message); 
} 

Açıkçası, Firefox'ta bu sadece çalışır etkin/(o da Firebug Lite ile diğer tarayıcılarda da çalışması gerekir): Örneğin

, şu anda Firebug'ın console.log destekler. Temel olarak, hangi ortamın içine çekileceğini bilmediğim bir JS kütüphanesi veriyorum ve hata ayıklama çıktısını kullanıcıya bildirmenin bir yolu olup olmadığını anlayabiliyorum.

Yani, belki jQuery şey sunar - jQuery mevcut olduğunu kontrol edin ve kullanmak. Ya da belki de koklayabildiğim iyi çalışan IE eklentileri vardır. Ama oldukça iyi kurulmuş ve kullanılan bir mekanizma olmalı. İnsanların oluşturduğu tüm belirsiz günlük işlevlerini kontrol edemiyorum.

Lütfen, her bir yanıt için yalnızca bir kitaplık/teknoloji, böylece oylama sıralamasına sahip olabilirler. Ayrıca, alert() işlevinin kullanılması iyi bir kısa vadeli çözümdür, ancak güçlü hata ayıklama günlüğünü istiyorsanız veya yürütmeyi engellemek bir sorun çıkarsa bozulur.

cevap

-1

Ben ise, aşağıdaki bir inancı duyuyorum:

alert('Some message/variables'); 
+0

Bu iyi bir geçici çözümdür, ancak genellikle çok fazla olan bilgi düzeyinde günlüğe kaydetme yapıyorsanız başarısız olur. Uygulama tüm uyarı() s – levik

+0

Ahh nedeniyle hızlı bir şekilde kullanılamaz hale gelebilirdi, daha kısa süreli bilgi çıkışı – Teifion

+0

çıktığı varsayılsa bile, sadece "çıkış" bilgisi olsaydı bile, alarm engelleme çağrısı olduğundan, ne yazık ki , yan etkilere neden, özellikle Ajax ile. Ben sadece yanlış yere yerleştirilen bir uyarı nedeniyle kodun davranışları çok az davrandı. –

4

Firebug lite çapraz tarayıcı, üzere en az size çoğu tarayıcıda console.log yetenekleri vermek Firefbug ait lite versiyonu.

0

Ne Firebug Lite hakkında (bu olmayan Firefox tarayıcıları için)? IE'de Dojo kodu hata ayıklama dışında çok kullanmadım. Ancak, IE, Safari ve Opera'da bir Firebug konsolu koymak için elinden gelenin en iyisini yapmaya çalışır.

Tabii ki her zaman her zaman güvenilir 'uyarı (err_msg)' olur; : D

1

yürekten jQuery ayıklama eklentisi (olarak da bilinir, jquery.debug.js) önerebilir. Bkz. http://trainofthoughts.org/blog/2007/03/16/jquery-plugin-debug/.

Bu eklenti, hata ayıklama günlüğünü kapatıp açmanızı sağlar. Günlük şuna benzer:

$.log('My value is: ' + val); 

Çıktı Firefox altında console.log gönderilir ve diğer tarayıcılarda sayfanın alt kısmında sokulan bir div bloğuna yazılır.

+0

jQuery kullanmıyorum - belirtildiği gibi, jQuery'nin bulunduğu bir sayfada MAYIS yüklenebilecek bir kitaplık oluşturuyorum. Bu olursa, güvenebileceğim jQuery özelliklerini kullanmak istiyorum ... Ama üçüncü parti eklenti bir esnemedir ... – levik

7

şahsen Kundakçı/Kundakçı Lite ve IE Visual Studio hata ayıklama yapalım kullanın. Hiçbiri bir ziyaretçinin çılgın bir tarayıcı kullandığı zaman bunların hiçbiri iyi olmaz. İstemcinizin javascript'ini hatalarını sunucunuza kaydetmek için almanız gerekiyor. Aşağıya bağlandığım power point sunumuna bir göz atın. Javascript'inizin sunucunuzdaki şeyleri günlüğe kaydetmesiyle ilgili bazı oldukça düzgün fikirleri var.

Temel olarak, window.onerror ve try {} catch() yararlı hata ayıklama bilgi ile sunucuya geri bir istekte bir işlevle {} blokları kanca.

Bu tür bir işlemi kendi web uygulamamda uygulamıştım. Sunucuya bir JSON şifreli ileti gönderen bir işlevi çağıran her yakalama() {} bloğum var, bu da benim varolan günlük altyapımı kullanır (benim durumumda log4perl).Bağlandığım sunu, ayrıca, GET isteğinin bir parçası olarak hataları ekleyerek javascript'inize bir resmin yüklenmesini önerir. Tek sorun, yığın izlerini (IE sizin için hiç üretmez) dahil etmek istiyorsanız, istek çok büyük olacaktır.

Tracking ClientSide Errors, by Eric Pascarello

PS: Ben belki giriş yaptığını Hatanın nedeni olduğu için "sert" günlük tutma jQuery gibi kütüphanenin her türlü kullanmak iyi bir fikir olduğunu sanmıyorum eklemek istedim jQuery veya Firebug Lite! Belki de tarayıcı (öksürük IE6) bazı deli yükleme sırası yaptım ve kitaplığı doğru yüklemek için çok aptal olduğu için bir Null Reference hatası veriyor.

Örneğimde, tüm javascript günlük kodunun < baş > başlığında olduğundan ve bir .js dosyası olarak çekilmediğinden emin oldum. Bu sayede tarayıcıda ne tür eğri topları olursa olsun bahis oranlarının iyi olduğuna emin olabilirim.

3

MochiKit (tam ad çözünürlükte buraya dahil) aşağıdaki işlevlere sahiptir:

MochiKit.Logging.logDebug() // prefaces value with "DEBUG: " 
MochiKit.Logging.log() // prefaces value with "INFO: " 
MochiKit.Logging.logError() // prefaces value with "ERROR: " 
MochiKit.Logging.logFatal() // prefaces value with "FATAL: " 
MochiKit.Logging.logWarning() // prefaces value with "WARNING: " 

bundan daha MochiKit.Logging ad alanına çok daha fazla olduğunu, ancak bu temelidir.

İlgili konular