可能重复:
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
复制相似问题