Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将JavaScript`console.log`保存到全局变量或文件_Javascript_Jquery - Fatal编程技术网

将JavaScript`console.log`保存到全局变量或文件

将JavaScript`console.log`保存到全局变量或文件,javascript,jquery,Javascript,Jquery,我希望以编程方式访问console.log数据,因此我需要实现一个console.log,它将数据存储在全局变量或文件中 有人能告诉我怎么做吗?编辑2 使用像这样的图书馆吗 请参阅下面的答案,了解如何自己实现类似的功能 原始答复: 做一些类似于: var myLogs = []; (function () { var log = console.log; console.log = function () { var args = Array.prototype.slice.ca

我希望以编程方式访问console.log数据,因此我需要实现一个console.log,它将数据存储在全局变量或文件中

有人能告诉我怎么做吗?

编辑2

使用像这样的图书馆吗

请参阅下面的答案,了解如何自己实现类似的功能

原始答复:

做一些类似于:

var myLogs = [];
(function () {
  var log = console.log;
  console.log = function () {
    var args = Array.prototype.slice.call(arguments)
    log.apply(this, args );
    myLogs.push(args);
  };
}());
gloabl变量myLogs将包含日志数据

您可能希望根据自己的需要采用该代码。也许您想从args数组中生成一个字符串

编辑

如果要使用console.log、console.error、console.warn、console.info并存储日志级别:

var logData = [];
(function () {
    var log = console.log,
        error = console.error,
        warn = console.warn,
        info = console.info;

    console.log = function () {
        var args = Array.prototype.slice.call(arguments)
        log.apply(this, args );
        logData.push({level: "log", arguments: args});
    };
    console.error = function () {
        var args = Array.prototype.slice.call(arguments)
        error.apply(this, args );
        logData.push({level: "error", arguments: args});
    };
    console.warn = function () {
        var args = Array.prototype.slice.call(arguments)
        warn.apply(this, args );
        logData.push({level: "warn", arguments: args});
    };
    console.info = function () {
        var args = Array.prototype.slice.call(arguments)
        info.apply(this, args );
        logData.push({level: "info", arguments: args});
    };
}());

你想要一种东西吗?还可以看一看@谢谢,这很有效。但是我如何在arguments对象中获取错误类型,如信息、警告等。我只获取错误描述。我编辑了答案,并添加了一个如何存储日志级别的示例。请注意,现在每个日志都有一个名为level的属性对象。这不会捕获我在控制台中看到的所有javascript警告和错误消息,但不会保存在全局变量中。我希望捕获自己生成的错误和警告消息,而无需调用console.log或其他函数。它应覆盖console.log函数和其他函数。那么谁调用过这个函数,数据应该最终在全局数组中。确保首先运行这段代码!如果有人打电话抛出新的错误,那么这不会出现在这个日志中。在您的问题中,您只询问了如何从调用console.log收集数据。