2010-05-13 42 views
7

Olası Çoğalt:
Logging Clientside JavaScript Errors on ServerGünlüğü istemci tarafı hataları

Nasıl sunucuya istemci tarafında javascript hataları oturum açabilir? JQuery ve MVC kullanıyorum.

+0

Şu anda Elmah günlük çerçevesini kullanıyorum. Buna bir çözüm bağlamanın bir yolu var mı? –

+1

Son zamanlarda bu güzel hosted çözümü buldum: http://errorception.com/ –

+0

JSNLog (jsnlog.com), JavaScript'inizdeki istemcide dizeleri ve nesneleri günlüğe kaydetmenize ve Elmah kullanarak sunucuda saklamanıza olanak tanır. JSNLog'u yüklediğinizde sadece Elmah'ı belirtirsiniz. – user1147862

cevap

16

İstemci tarafı hataları olduğundan, bunları XMLHttpRequest kullanarak sunucuya göndermeniz gerekir.

window.onerror = function (msg, url, line) 
{ 
    var message = "Error in "+url+" on line "+line+": "+msg; 
    $.post("logerror.aspx", { "msg" : message }); 
} 

Sen hiç XMLHttpRequest kullanan bir appender var benim log4javascript, kullanabilir line ve url 8.

+0

window.onerror = function (msg, url, line) benim için çalıştı – timborden

+0

Bu yaklaşımla bilinmesi gereken herhangi bir güvenlik sorunu var mı? –

+0

@Arman: Hiç konuşmak yok. Birisi özel bir mesajla 'logerror.aspx' isteğini yerine getirebilir, ancak sunucu taraf kodunuz katı olduğu sürece saldırı vektörleri yoktur. –

6

öncesinde IE sürümlerinde çok yanlış olabilir unutmayın: Sen try...catch ifadeleri veya window.onerror kullanabilirsiniz sunucuya giriş yapın:

var log = log4javascript.getLogger("serverLog"); 
var ajaxAppender = new log4javascript.AjaxAppender("clientlogger.jsp"); 
log.addAppender(ajaxAppender); 

try { 
    nonExistentFunction(); 
} catch(ex) { 
    log.error("Something's gone wrong!", ex); 
} 
+0

Bu öneri için teşekkürler. Bunu log4net'e bağlamak mümkün olup olmadığını biliyor musunuz? –

+0

Elle yapmak için yeterince kolay. AjaxAppender'ın günlüğe kaydetme verilerini gönderdiği varsayılan yol, mesaj, zaman damgası, önem derecesi vb. Gibi günlüğe kaydetme olayının yönlerini temsil eden parametreler içeren bir HTTP gönderisidir. Sunucuda, bir sayfanız veya HTTP işleyicinizin post ve post parametrelerine dayanarak bir log4net araması yapın. –

+0

JSNLog (jsnlog.com) sizin için tüm bunları kutudan çıkarır. JavaScript kitaplığından günlük iletileri alan ve onları Log4Net, NLog veya Elmah gibi sunucu tarafındaki kayıt defteri kitaplığına geçiren bir JavaScript günlük kütüphanesi ve bir sunucu tarafı dll'den oluşur. Web günlüğünüzde JavaScript kaydedicilerinizi yapılandırmanızı sağlar. Ve çift mesajlar, mesaj serme ve tarayıcı türüne göre filtreleme gibi her türlü özelliğe sahiptir. – user1147862

İlgili konular