2013-03-17 3 views
6

Я заинтересован в мониторинге ошибок javascript и регистрации ошибок с помощью callstack.мониторинг ошибок js

Мне не интересно обертывать все в блоки try-catch.

Согласно этой статье http://blog.errorception.com/2011/12/call-stacks-in-ie.html это возможно внутри window.onerror «рекурсивный вызов .caller для каждой функции в стеке, чтобы знать предыдущую функцию в стеке»

Я пытался получить стек вызовов:

window.onerror = function(errorMsg, url, lineNumber) 
{ 
    var stk = [], clr = arguments.callee.caller; 
    while(clr) 
    { 
     stk.push("" + clr); 
     clr = clr.caller; 
    } 
    // Logging stk 
    send_callstack_to_log(stk); 
} 

, но только один шаг можно, даже если CallStack было гораздо больше:

(function() 
{ 
function inside() {it.will.be.exception;}; 
function middle() {inside()}; 
function outside() {middle()} 
outside(); 
})(); 

Один шаг не интересен, потому что аргументы onerror дают мне еще больше информации об этом.

Да, я пробовал его с IE согласно статье, упомянутой выше.

Примечание. Я также попытался открыть учетную запись «ERRORCAEPTION» для сбора журнала ошибок. Я протестировал его с помощью IE и «ERRORCAEPTION» понял, что ошибки исходят от IE, но я не могу найти информацию о вызове в журнале, который у меня есть.

+0

Вы можете взглянуть на [stacktrace.js] (https://github.com/eriwen/javascript-stacktrace). Это кросс-браузерное решение. – zeroflagL

ответ

1

Посмотрите здесь: https://github.com/eriwen/javascript-stacktrace

Это один я использую на Muscula, сервис как errorception, за исключением того, что это бесплатно.

+0

Я видел это. Это не помогает мне внутри window.onerror. Внутри try-catch легко получить стек, но, как я сказал в своем вопросе, я не могу обернуть все в блоки try-catch. Но спасибо за ваши усилия. – Alexander

2

К сожалению, этот журнал не всегда будет доступен, ему не хватает номеров строк, вы не можете положиться на него.

Попробуйте https://qbaka.com

Qbaka автоматически перегружать кучу функций JavaScript, как addEventListener, setTimeout, XMLHtppRequest и т.д., так что ошибки, происходящие в обратных вызовах являются автоматически обматывают примерки улова, и вы получите stacktraces без каких-либо изменений коды.

1

Вы можете попробовать atatus который обеспечивает яваскрипт контекстного отслеживание ошибок: https://www.atatus.com/

Смежные вопросы