Get console history

前端 未结 4 733
無奈伤痛
無奈伤痛 2020-12-30 01:42

I\'d like to know if there is a way in javascript to retrieve console history.

What I mean by console history is what appears in the dev tools console. For instance,

相关标签:
4条回答
  • 2020-12-30 02:21

    Chrome extensions had an API for that, experimental.devtools.console:

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

    This API has been removed.

    0 讨论(0)
  • 2020-12-30 02:23

    I wrote a simple cross-browser library for this, called console.history. It's available on GitHub: https://git.io/console

    What the library basically does is catch all calls to console.[log/warn/error/debug/info] and store them in the console.history array. As a bonus, a full stack trace is also added.

    Test file test.js contains:

    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();
    

    The entry to console.history will be:

    {
      "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"
      }
    }
    
    0 讨论(0)
  • 2020-12-30 02:34

    There is no way to get the console data with JavaScript. Only way you would be able to do it is basically hijack all the console functions and store a copy and than call the default log lines.

    0 讨论(0)
  • 2020-12-30 02:38
    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);
        }
    }
    

    And then use console.history to access history

    0 讨论(0)
提交回复
热议问题