首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >捕获javascript console.log?

捕获javascript console.log?
EN

Stack Overflow用户
提问于 2012-07-10 05:03:13
回答 2查看 87.1K关注 0票数 80

可能重复:

Intercept calls to console.log in Chrome

Can I extend the console object (for rerouting the logging) in javascript?

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-10 05:05:38

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

代码语言:javascript
复制
(function(){
    var oldLog = console.log;
    console.log = function (message) {
        // DO MESSAGE HERE.
        oldLog.apply(console, arguments);
    };
})();

  1. Line 1将您的函数封装在一个闭包中,这样其他函数就不能直接访问method.
  2. Line (为了便于维护,server.
  3. Line 2 oldLog捕获了原始的 3创建了一个新的4oldLog是您向您的server.
  4. Line 5发送message的地方) is调用原始方法,就像它最初会被处理一样。

之所以使用apply,是因为我们可以使用原始参数在console上调用它。简单地调用oldLog(message)将会失败,因为log依赖于它与console的关联。

根据zzzzBov的评论更新,在IE9 console.log中实际上不是一个函数,所以oldLog.apply会失败。有关更多详细信息,请参阅console.log.apply not working in IE9

票数 156
EN

Stack Overflow用户

发布于 2012-07-10 05:04:42

简单:

代码语言:javascript
复制
function yourCustomLog(msg) {
  //send msg via AJAX
}

window.console.log = yourCustomLog;

您可能希望覆盖整个console对象来捕获console.infoconsole.warn等:

代码语言:javascript
复制
window.console = {
  log : function(msg) {...},
  info : function(msg) {...},
  warn : function(msg) {...},
  //...
}
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11403107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档