可能重复:
Intercept calls to console.log in Chrome
Can I extend the console object (for rerouting the logging) in javascript?
当我的JS应用程序写入console.log
时,我希望捕获该日志消息,以便可以将该日志输出AJAX到服务器。我该怎么做?
写入日志的代码来自外部服务,这就是为什么我不能直接使用ajax。
发布于 2012-07-10 05:05:38
您可以通过以下方式劫持JavaScript函数:
(function(){
var oldLog = console.log;
console.log = function (message) {
// DO MESSAGE HERE.
oldLog.apply(console, arguments);
};
})();
oldLog
捕获了原始的 3创建了一个新的4oldLog
是您向您的server.message
的地方) is调用原始方法,就像它最初会被处理一样。之所以使用apply
,是因为我们可以使用原始参数在console
上调用它。简单地调用oldLog(message)
将会失败,因为log
依赖于它与console
的关联。
根据zzzzBov的评论更新,在IE9 console.log
中实际上不是一个函数,所以oldLog.apply
会失败。有关更多详细信息,请参阅console.log.apply not working in IE9。
发布于 2012-07-10 05:04:42
简单:
function yourCustomLog(msg) {
//send msg via AJAX
}
window.console.log = yourCustomLog;
您可能希望覆盖整个console
对象来捕获console.info
、console.warn
等:
window.console = {
log : function(msg) {...},
info : function(msg) {...},
warn : function(msg) {...},
//...
}
https://stackoverflow.com/questions/11403107
复制相似问题