以编程方式保存chrome的控制台日志

时间:2015-07-11 00:58:45

标签: javascript node.js google-chrome debugging

在javascript或nodejs中是否有办法以编程方式获取chrome控制台中的所有内容,以便将其保存到文件或数据库中?

3 个答案:

答案 0 :(得分:0)

在执行您要记录的代码之前,将console.log覆盖一个将其抛入数组(或其他任何地方)的代码

ECMAScript 6中的示例:

var logs = [];
var oldConsoleLog = console.log;
console.log = function(...args) {
    logs.push(args);
    oldConsoleLog.call(this, args);
}

答案 1 :(得分:0)

隐藏您想要观察的方法并对其数据执行某些操作,例如

if (console) (function (obj, types, callback) {
    var slice = Array.prototype.slice, // slice used later to protect args from change
        i;
    function wrap(type, method, callback) {
        return function () {
            callback.call(this, type, slice.call(arguments), method);
            return method.apply(this, arguments);
        };
    }
    for (i = 0; i < types.length; ++i)
        obj[types[i]] = wrap(types[i], obj[types[i]], callback);
}(
    console,
    ['log', 'warn', 'error'],
    function (type, args, meth) {
        // this is the callback, do something with the data
        // **don't use console here unless you want an infinite loop ;)
        alert(type);
    }
));

这里的 IIFE 是完全通用的,你可以用它来影响你想要的任何对象上的方法

在这里,我将回调设置为仅提醒类型,即如果您使用console.log则会提醒 log 然后它会记录到控制台

// with callback defined above,
console.log('foo'); // alerts "log" then logs "foo"

答案 2 :(得分:0)

在Chrome控制台中获取所有内容的另一种方法是使用http://www.consoleexport.com 您输入您的URL并提交。它将在表格中显示所有控制台条目,您可以将其复制并粘贴到电子表格中。或者,您可以选择将控制台条目导出为.txt(制表符分隔)或.xlsx格式文件。