自定义console.log函数,告诉您调用它的行

时间:2014-02-17 22:40:48

标签: javascript console

这是一个简单的console.log函数,可以将内容输出到控制台:

function u(x) { console.log(x); } // line 41

但是这对于调试来说并不是完全有效的,因为浏览器将始终输出调用console.log()的行,在这种情况下是第41行。

错误或其他可能在第741行,但没关系。我意识到我可以一直使用console.log而不是创建一个较短的自定义函数,但如果我不需要,那么......

你怎么能(x)显示它被调用的实际行?

干杯!

3 个答案:

答案 0 :(得分:1)

您提出了一个棘手的问题,因为我必须处理异常,以及正确的方法是什么。通常在Java等语言中,您会传递异常而不是错误消息。你可以做点什么

u(new Error("this is my error"))

function(e)中你可以console.log(e)打印当前执行的正确堆栈。

关于如何获取实际行号,请查看How to get JavaScript caller function line number? How to get JavaScript caller source URL?

希望这会有所帮助。

答案 1 :(得分:1)

将行号发送到函数非常简单。如果没有更大的解决方案,我不确定跟踪是如此简单。

function u(x, l){
    console.log(x + ' on line ' + l);
}

u('test', new Error().lineNumber)

编辑: 但是,我知道这只适用于FF和Opera。这里有一个跨浏览器解决方案https://github.com/stacktracejs/stacktrace.js

答案 2 :(得分:0)

至少在chrome中,您可以调用console.trace()将堆栈跟踪记录到控制台。

编辑:

function u(x) {
    console.log(x);
    console.trace();
}

应该给你你想要的东西。