获取控制台历史记

时间:2012-12-07 12:45:07

标签: javascript google-chrome-devtools

我想知道javascript中是否有办法检索控制台历史记录。

控制台历史记录的含义是开发工具控制台中显示的内容。 例如,我想在html页面中打印我的开发工具中显示的所有错误,警告,信息和日志,而不打开它们。

如果我不清楚,请告诉我。

4 个答案:

答案 0 :(得分:14)

我为此编写了一个简单的跨浏览器库,名为console.history。它可以在GitHub上找到: https://git.io/console

库的基本功能是捕获对console.[log/warn/error/debug/info]的所有调用并将它们存储在console.history数组中。作为奖励,还添加了完整的堆栈跟踪。

测试文件test.js包含:

function outer() {
  inner();
}

function inner() {
  var array = [1,2,3];
  var object = {"foo": "bar", "key": "value"};
  console.warn("Something went wrong, but we're okay!", array, object);
}

outer();

console.history的条目是:

{
  "type": "warn",
  "timestamp": "Thu, 01 Sep 2016 15:38:28 GMT",
  "arguments": {
    "0": "Something went wrong, but we're okay!",
    "1": [1, 2, 3],
    "2": {
      "foo": "bar",
      "key": "value"
    }
  },
  "stack": {
    "0": "at inner (http://localhost:1337/test/test.js:6:11)",
    "1": "at outer (http://localhost:1337/test/test.js:2:3)",
    "2": "at http://localhost:1337/test/test.js:9:1"
  }
}

答案 1 :(得分:3)

Chrome扩展程序有一个API,experimental.devtools.console

chrome.experimental.devtools.console.getMessages(function(messages) {  })

此API已被删除。

答案 2 :(得分:2)

无法使用JavaScript获取控制台数据。只有你能够做到这一点,基本上是劫持所有控制台功能并存储副本,而不是调用默认的日志行。

答案 3 :(得分:1)

console.history = [];
var oldConsole = {};
for (var i in console) {
    if (typeof console[i] == 'function') {
        oldConsole[i] = console[i];
        var strr = '(function(){\
            console.history.push({func:\'' + i + '\',args : Array.prototype.slice.call(arguments)});\
            oldConsole[\'' + i + '\'].apply(console, arguments);\
        })';
        console[i] = eval(strr);
    }
}

然后使用 console.history 访问历史记录