我想在我的应用程序中放置一个按钮,如果您按该按钮,它将获取写入控制台的所有内容并将其通过电子邮件发送给我(用于报告错误)。我知道我可以保留一个变量,并且每次执行console.log时都将消息追加到该变量,但是我试图将应用程序的内存消耗保持在较低水平,因此仅从应用程序中获取它会更有效。安慰。
有没有办法从javascript检索控制台消息?
谢谢
我想在我的应用程序中放置一个按钮,如果您按该按钮,它将获取写入控制台的所有内容并将其通过电子邮件发送给我(用于报告错误)。我知道我可以保留一个变量,并且每次执行console.log时都将消息追加到该变量,但是我试图将应用程序的内存消耗保持在较低水平,因此仅从应用程序中获取它会更有效。安慰。
有没有办法从javascript检索控制台消息?
谢谢
Answers:
你不能 控制台中的内容无法从JavaScript中读取。
您可以做的就是钩住console.log
函数,以便在日志记录时进行存储:
console.stdlog = console.log.bind(console);
console.logs = [];
console.log = function(){
console.logs.push(Array.from(arguments));
console.stdlog.apply(console, arguments);
}
console.logs
包含所有记录的内容。您可以随时通过清洁它console.logs.length = 0;
。
您仍然可以通过调用进行标准的非存储日志console.stdlog
。
log
,而不必输入太多内容。我将与它同步console.log
按照这个答案,如果你与其他人合作(谁可能会或可能不熟悉你的方法。)
console.log
调用原始文件的行号?
Error
函数内部,然后从堆栈跟踪中解析出文件名和行。
如何读取js中的浏览器控制台错误?
https://www.quora.com/How-do-I-read-console-window-errors-from-Chrome-using-JavaScript
console.defaultLog = console.log.bind(console);
console.logs = [];
console.log = function(){
// default & console.log()
console.defaultLog.apply(console, arguments);
// new & array data
console.logs.push(Array.from(arguments));
}
console.defaultError = console.error.bind(console);
console.errors = [];
console.error = function(){
// default & console.error()
console.defaultError.apply(console, arguments);
// new & array data
console.errors.push(Array.from(arguments));
}
console.defaultWarn = console.warn.bind(console);
console.warns = [];
console.warn = function(){
// default & console.warn()
console.defaultWarn.apply(console, arguments);
// new & array data
console.warns.push(Array.from(arguments));
}
console.defaultDebug = console.debug.bind(console);
console.debugs = [];
console.debug = function(){
// default & console.debug()
console.defaultDebug.apply(console, arguments);
// new & array data
console.debugs.push(Array.from(arguments));
}
我已经使用这个代码在过去捕捉到所有控制台活动,并将其与存储类型和时间戳在console.everything
发送回服务器用于诊断表格数据录入的问题。我在<head>
元素中尽早运行此代码。
if (console.everything === undefined)
{
console.everything = [];
console.defaultLog = console.log.bind(console);
console.log = function(){
console.everything.push({"type":"log", "datetime":Date().toLocaleString(), "value":Array.from(arguments)});
console.defaultLog.apply(console, arguments);
}
console.defaultError = console.error.bind(console);
console.error = function(){
console.everything.push({"type":"error", "datetime":Date().toLocaleString(), "value":Array.from(arguments)});
console.defaultError.apply(console, arguments);
}
console.defaultWarn = console.warn.bind(console);
console.warn = function(){
console.everything.push({"type":"warn", "datetime":Date().toLocaleString(), "value":Array.from(arguments)});
console.defaultWarn.apply(console, arguments);
}
console.defaultDebug = console.debug.bind(console);
console.debug = function(){
console.everything.push({"type":"debug", "datetime":Date().toLocaleString(), "value":Array.from(arguments)});
console.defaultDebug.apply(console, arguments);
}
}