猿问

捕获javascript console.log?

捕获javascript console.log?

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

写入日志的代码来自外部服务,这就是我不能直接使用它的原因。


繁花不似锦
浏览 369回答 2
2回答

宝慕林4294392

您可以通过以下方式劫持JavaScript函数:(function(){     var oldLog = console.log;     console.log = function (message) {         // DO MESSAGE HERE.         oldLog.apply(console, arguments);     };})();第1行将您的函数包装在一个闭包中,因此没有其他函数可以直接访问oldLog(出于可维护性的原因)。第2行捕获原始方法。第3行创建了一个新功能。第4行是您发送message到服务器的位置。第5行调用最初处理的原始方法。apply使用这样我们就可以调用它在 console使用原来的参数。简单地调用oldLog(message)会失败,因为它log取决于它的关联console。更新下面的每个zzzzBov的评论,在IE9 console.log中实际上并不是一个函数,所以oldLog.apply会失败。有关更多详细信息,请参阅console.log.apply无法在IE9中运行。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答