监控js错误

时间:2013-03-17 12:56:38

标签: javascript

我有兴趣监控javascript错误并使用callstack记录错误。

我不想将所有内容都包装在try-catch块中。

根据这篇文章http://blog.errorception.com/2011/12/call-stacks-in-ie.html 它可能在window.onerror中“以递归方式调用.caller来查找堆栈中的每个函数以了解堆栈中的上一个函数

我试图获得callstack:

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();
})();

一步并不有趣,因为错误的论据会给我更多关于它的信息。

是的,我根据上面提到的文章尝试了IE。

备注:我还试图在“ERRORCAEPTION”上开设一个帐户来收集错误日志。我用IE测试它并且“ERRORCAEPTION”认识到错误来自IE,但是我在日志中找不到任何callstack信息。

4 个答案:

答案 0 :(得分:2)

不幸的是,这个日志并不总是可用,它缺少行号,你不能真正依赖它。

尝试https://qbaka.com

Qbaka会自动超载一堆JavaScript函数,例如addEventListenersetTimeoutXMLHtppRequest等,以便回调中发生的错误自动用try-catch包装并且您将获得没有任何代码修改的堆栈跟踪。

答案 1 :(得分:1)

看看这里: https://github.com/eriwen/javascript-stacktrace

这是我在Muscula上使用的那个,一个类似错误的服务,除了它是免费的。

答案 2 :(得分:1)

您可以尝试 atatus ,它提供了javascript上下文错误跟踪:https://www.atatus.com/

答案 3 :(得分:0)

我写了一个程序来监视js错误。也许会有所帮助。

我使用三种方法来捕获异常,例如window.onerror,重写console.error和window.onunhandledrejection。这样我会收到未捕获的错误,未处理的承诺拒绝和自定义错误

在这里看看:https://github.com/a597873885/webfunny_monitor

或此处:https://www.webfunny.cn

有帮助