Ste*_*ter 5 javascript logging
是否可以使用一些javascript技巧来告诉console.log它应该输出哪个行号?
假设,我们通过以下简单示例:
function Logger () {
this.debug = function(msg) {
// do some stuff with msg
console.log(msg);
};
}
var log = new Logger();
log.debug("Hello");
Run Code Online (Sandbox Code Playgroud)
如果您打开该页面,Chrome会显示以下内容:
这表示消息已记录,main.js:4但我真正想要的是它显示的内容main.js:9.因为第9行是调用记录器的地方.对于这个简单的情况,它没有太大的区别,但是当Logger在一个单独的文件中时,它总是显示logger.js而不是调用记录器的类.
Logger类应该使用记录的消息做一些额外的事情(例如将其发送到服务器),因此我不能只使用this.debug = console.log.
编辑:
已经有一些类似的问题了,但是所有这些问题只是在输出中添加了一行,这是不可点击的,无法跳转到相应的行:
我想到的第一件事是创建一个新Error对象来获取堆栈跟踪,然后找到调用您的方法的行,如下所示:
function Logger () {
this.debug = function(msg) {
// do some stuff with msg
//TODO: document this line
var callerLine = new Error().stack.split('\n')[2];
console.log(msg, callerLine);
};
}
var log = new Logger();
log.debug("Hello");
Run Code Online (Sandbox Code Playgroud)
基本上,我将错误的堆栈拆分为每个换行符,并忽略第一行和第二行(分别是错误消息和堆栈中您自己的方法)。
| 归档时间: |
|
| 查看次数: |
929 次 |
| 最近记录: |