3

我想将 console.log() 函数的输出保存为对象或变量。我主要对接收对象结果以及行号感兴趣。

以下只是为了演示,我正在寻找什么:

var myobj = {"key":"value"}; // (<< in 'myjs.js, line 123)
var mylog = console.log( myobj );

// output mylog: {"key":"value"}, myjs.js:123

提前感谢您的帮助!

4

4 回答 4

2

您可以使用new Error().lineNumber获取行号有关确定行号的更多信息 -确定行号

于 2013-08-19T07:38:45.093 回答
1

您可以覆盖 console.log 并在谷歌浏览器中调用 Error().stack 它显示行号。

在谷歌浏览器堆栈中看起来像这样:

Error
    at Error (<anonymous>)
    at Console.console.log (http://localhost/test.js:6:27)
    at foo (http://localhost/test.js:13:13)
    at http://localhost/test.js:16:1 

所以代码需要获取 3 行并删除"at http://localhost"字符数

(function(log) {
    console.log = function(o) {
        var stack = Error().stack.split('\n');
        log.call(console, JSON.stringify(o) + ', ' + stack[3].
            replace(/.*http:\/\/[^\/]*|:[0-9]+\)$/g, ''));
    };
})(console.log);


function foo() {
    console.log({foo: 'bar'});
}

foo();
于 2013-08-19T08:07:34.417 回答
0

尝试保存 myObj 对象。这就是记录器将记录的内容。

于 2013-08-19T07:28:49.193 回答
0

您可以从链接中尝试此操作Read the output of console.log

function myFunctionThatMightHaveAnError(){
    // instead of just failing silently, actually throw an error
    $.error("My special error");
}
// Then use a try/catch block to handle it
try {
    myFunctionThatMightHaveAnError();
    alert("No error!"); // this line would only run if no error were thrown
} catch (e) {
    if(e == "My special error") {
        // Handle error
    }
}
于 2013-08-19T07:31:57.213 回答