将JavaScript`console.log`保存到全局变量或文件
我希望以编程方式访问console.log数据,因此我需要实现一个console.log,它将数据存储在全局变量或文件中 有人能告诉我怎么做吗?编辑2 使用像这样的图书馆吗 请参阅下面的答案,了解如何自己实现类似的功能 原始答复: 做一些类似于:将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
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收集数据。