一尘不染

捕获javascript console.log?

javascript

当我的JS应用程序写入console.log时,我想捕获该日志消息,以便可以AJAX将日志输出到服务器。我怎么做?

写入日志的代码来自外部服务,这就是为什么我不能直接将其ajax的原因。


阅读 392

收藏
2020-05-01

共1个答案

一尘不染

您可以通过以下方式劫持JavaScript函数:

(function(){
    var oldLog = console.log;
    console.log = function (message) {
        // DO MESSAGE HERE.
        oldLog.apply(console, arguments);
    };
})();
  1. 第1 行将您的函数包装在一个闭包中,因此没有其他函数可以直接访问oldLog(出于可维护性的原因)。
  2. 第2行 记录了原始方法。
  3. 第3行 创建了一个新功能。
  4. 第4行 是您发送message到服务器的位置。
  5. 第5 行将调用原始方法,因为它最初会被处理。

apply使用这样我们就可以调用它
console使用原来的参数。简单调用oldLog(message)会失败,因为log取决于它与的关联console


2020-05-01