监视JavaScript输出,例如console.log()

时间:2015-03-26 03:50:50

标签: javascript jquery html

我一直在谷歌和各种JavaScript网站上搜索,但我还没有找到答案。有没有办法可以使用JavaScript / JQuery来监控console.log()?

等事件

例如,我想在单独的,麻烦的处理脚本调用console.log('foo');时触发,当使用任何带有JavaScript控制台的Web检查器时,它很容易当脚本记录时会弹出foo,但有没有办法可以用不同的脚本挂钩该事件?

2 个答案:

答案 0 :(得分:4)

Can I extend the console object (for rerouting the logging) in javascript?借来的代码:

(function() {
    var exLog = console.log;
    console.log = function(msg) {
        exLog.apply(console, arguments);
        alert(msg);
    }
})()

只要在执行console.log()之前运行此代码,这应该允许您在执行console.log()时执行任何操作。

答案 1 :(得分:1)

虽然您无法扩展控制台,但您可以包装其中的每个方法。下面的代码拦截每个日志记录方法,并将每个调用记录在一个名为log的变量中。

var actualConsole = window.console;
var c = window.console = {};
var log={};
for (var m in actualConsole){
    if (typeof console[m] ==='object'){
        c[m]=console[m];
    }else if (typeof actualConsole[m] ==='function'){
        c[m]=function () {
            var args = Array.prototype.slice.call(arguments);
            log[this]=log[this]||[];
            log[this].push(args);        
            actualConsole[this].apply(actualConsole,args);
        }.bind(m);
    }// else - nothing else expected
}

console.log('log',1);
console.log('log',2);
console.error('error',1);
console.warn('warn',1);

actualConsole.log('log:',log);

日志看起来像:

{"log":[["log",1],["log",2]],"error":[["error",1]],"warn":[["warn",1]]}