javascript - 使用行号捕获控制台

Abd*_*cin 5 javascript console.log nw.js nwjs

捕获控制台时如何捕获日志的行号? (仅限 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.]
    };
},
Run Code Online (Sandbox Code Playgroud)

当控制台返回时,所有控制台的行号如预期的那样是 123 - 这并不重要。我想要的是能够将原始控制台日志号推送到我的阵列。

这是一个 nw.js 应用程序,因此 chrome api / nw api 会很棒 [如果存在]

sle*_*man 3

您可以尝试解析 的值new Error().stackError它是一个字符串,是创建对象的范围的堆栈跟踪。

输出取决于浏览器,因为它是非标准功能。由于您只需要它在 nw.js 上工作,它可能是您的一个选择。

在node.js(我怀疑是chrome)上,输出是换行符分隔的字符串,其中每行的格式如下:

at functionName (/absolute/file/path:lineNumber:charNumber)
Run Code Online (Sandbox Code Playgroud)

因此,在您的情况下,您想要的信息可能是:

new Error().stack.split('\n')[1];
Run Code Online (Sandbox Code Playgroud)