如何在JavaScript中将console.log的内容作为字符串获取

26

我正在尝试使用纯JavaScript将console.log作为字符串获取。 我的输入是一个我不熟悉的脚本,并且我想将所有在console.log中的消息收集到一个字符串中。

例如:

function doSomething(){
    console.log("start");
    console.log("end");
    var consoleLog = getConsoleLog();
    return consoleLog;
}

function getConsoleLog(){
    // How to implement this?
}

alert(doSomething());

JSFiddle链接

请注意,我不需要警报日志 - 这只是测试功能的简单示例。我将对日志内容进行一些操作。

2个回答

28

在使用之前,您可以覆盖console.log方法:

var logBackup = console.log;
var logMessages = [];

console.log = function() {
    logMessages.push.apply(logMessages, arguments);
    logBackup.apply(console, arguments);
};

使用 applyarguments 可以保留正确的 console.log 行为,即您可以通过一次调用添加多个日志消息。

它将把所有新的 console.log 消息推送到 logMessages 数组中。


1
这对我来说会抛出一个“InternalError:too much recursion”的错误。 - user.friendly
可能是因为您多次定义了console.log函数。 - juan Isaza

0

出于安全问题,没有API可以读取console.log()的历史记录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接