2012-11-20 20 views
8

Tarayıcılar arası biçimde, javascript'te yığın izi oluşturma hakkında öneriler var mı?Javascript stacktrace nasıl oluşturulur?

Yeni tarayıcılarda, Chrome ve Firefox, yığın izlerinin oluşturulmasına izin veren bir konsol nesnesini açığa çıkarır. Bu yöntem, yığın izinin bir değişkene depolanması için bir yöntem sağlamaz.

https://github.com/eriwen/javascript-stacktrace Oldukça güzel çalışır, ancak izinin bir parçası olarak dahil edilen komut dosyalarını yüklemek için ayrı ajax istekleri oluşturur. Bu, izleme kitaplıklarında yaygın bir yöntem gibi görünüyor. Tarayıcıların anlamlı bir yığın izi (satır numaraları, işlev adları, dosya adları, argümanlar, vb.) Oluşturmak için yeterli bilgiyi göstermediklerini tahmin ediyorum. Airbrake hesabınıza veya Errbit sunucunuza

+0

Sen bizler muhtemelen ne anlama, IE9- (kabul edelim o doğru Burada sorun olmak) çok yararlı bilgiler vermez. Biri dosya ve satır numarasını 'window.onerror'dan alabilir, ancak sadece bazı zamanları tetikler ve satır numarası bazen yanlıştır. –

+0

Evet, her zamanki gibi, IE problem olan bir çocuk. Onerror etkinliğinin satır numarası ve işlev adı bilgilerinin korkunç olduğu IE7'yi destekliyorum. Hala faydalı olabilir; Yakalanmamış hatalar için günlükleri yazmak için kullanıyorum. – Kyle

cevap

1

Bir Hata nesnesi oluşturun ve yığın üyesi için kontrol edin. Code Overtones kaynaktan uyarlanmıştır:

var e = new Error('dummy'); 
var stack = e.stack.replace(/^[^\(]+?[\n$]/gm, '') // remove lines without '(' 
    .replace(/^\s+at\s+/gm, '') // remove prefix text ' at ' 
    .split('\n'); 
console.log(stack); 

Error.stack Mozilla's reference documentation belgelenmiştir.

0

Airbrake provides a JavaScript library for logging stacktraces.

IE'de yığın izlerini alamıyorum ve diğerleri kusurlu olabilir, ancak kesinlikle aradığınız şeylerin çizgileri boyunca görünüyor.

+0

Teşekkürler. Zaten sunucumda oturum açabilecek bir çerçeve var. Temel olarak javascript'te log4j var. Sağladığınız bağlantıdaki yığın oluşturma kodu sorusuma göre projeden ödünç alınmış gibi görünüyor. Yığın oluşturma için diğer kütüphaneleri arıyorum. Kullanımdaki gerçek kayıt çerçevesi ayrı olmalıdır. – Kyle

İlgili konular