javascript - 使用行号捕获控制台
javascript - Capturing console with line number
如何在捕获控制台时捕获日志的行号?
(仅限Chrome - 其他与我无关的浏览器)
我有以下内容来捕获所有日志;
consoleLogs: [],
init: function(){
app.captureConsole();
},
captureConsole: function(){
var _log = console.log;
console.log = function() {
app.consoleLogs.push(JSON.stringify({method: 'log', args: arguments}));
return _log.apply(console, arguments); // <-- line number 123 [e.g.]
};
},
返回控制台时,所有控制台的行号如预期的那样为 123 - 这并不重要。我想要的是能够将原始控制台日志号推送到我的阵列。
这是一个 nw.js 应用程序,所以 chrome api / nw api 会很棒 [如果它存在]
你可以尝试解析new Error().stack
的值。它是一个字符串,它是创建 Error
对象的范围的堆栈跟踪。
输出依赖于浏览器,因为它是一个 non-standard 功能。由于您只需要它在 nw.js 上工作,它可能是您的一个选择。
在 node.js 上(我怀疑 chrome)输出是换行符分隔的字符串,其中每行的格式为:
at functionName (/absolute/file/path:lineNumber:charNumber)
所以在你的情况下,你想要的信息可能是:
new Error().stack.split('\n')[1];
如何在捕获控制台时捕获日志的行号? (仅限Chrome - 其他与我无关的浏览器)
我有以下内容来捕获所有日志;
consoleLogs: [],
init: function(){
app.captureConsole();
},
captureConsole: function(){
var _log = console.log;
console.log = function() {
app.consoleLogs.push(JSON.stringify({method: 'log', args: arguments}));
return _log.apply(console, arguments); // <-- line number 123 [e.g.]
};
},
返回控制台时,所有控制台的行号如预期的那样为 123 - 这并不重要。我想要的是能够将原始控制台日志号推送到我的阵列。
这是一个 nw.js 应用程序,所以 chrome api / nw api 会很棒 [如果它存在]
你可以尝试解析new Error().stack
的值。它是一个字符串,它是创建 Error
对象的范围的堆栈跟踪。
输出依赖于浏览器,因为它是一个 non-standard 功能。由于您只需要它在 nw.js 上工作,它可能是您的一个选择。
在 node.js 上(我怀疑 chrome)输出是换行符分隔的字符串,其中每行的格式为:
at functionName (/absolute/file/path:lineNumber:charNumber)
所以在你的情况下,你想要的信息可能是:
new Error().stack.split('\n')[1];