我在日志记录函数中调用firebugs console.log(检查控制台是否存在以及其他标志)
例如:
Log(string) { if (console && DEBUG) console.log(string); }
我的问题是firebug控制台显示了console.log函数调用的行号,而不是Log函数调用。
有没有办法改变firebug显示的行号?
答案 0 :(得分:2)
Firebug不允许您通过代码更改控制台上的行号。
答案 1 :(得分:1)
console.trace()将为您提供调用堆栈。
有关详细信息,请参阅http://getfirebug.com/logging。
答案 2 :(得分:0)
我采用了一种不同的方法,只是通过故意抛出错误来定义一个设置__stack__变量的属性,从中我们可以得到文件名,行号(以及许多其他如调用者及其行号,如果您选择实施它们。)
此外,我不是设置日志功能,而是将其设置为变量,但设置时会记录该变量。这将是设置LOG的位置,而不是定义的位置。
就像LOG =“我的消息”一样简单。然后,您可以稍后将其用作变量,以使用alert(LOG)
/*@const*/ //for closure-compiler
DEBUG=2 // 0=off, 1=msg:file:line:column, 2=msg:stack-trace
if(DEBUG){
/*@const @constructor*/
Object.defineProperty(window,'__stack__',{get:function(){
try{_ფ_()}catch(e){return e.stack.split(":")}
}})
/*@const @constructor*/
Object.defineProperty(window,'__file__',{get:function(){
var s=__stack__,l=s.length
return (isNaN(s[l-2]))?s[l-2]:s[l-3]
}})
/*@const @constructor*/
Object.defineProperty(window,'__line__',{get:function(){
var s=__stack__,l=s.length
return (isNaN(s[l-2]))?s[l-1]:s[l-2]
}})
/*@const @constructor*/
Object.defineProperty(window,'__col__',{get:function(){
var s=__stack__,l=s.length
return (isNaN(s[l-2]))?"NA":s[l-1]
}})
/*@const @constructor*/
Object.defineProperty(window,'LOG',{
get:function(){return out},
set:function(msg){if(DEBUG>1)out=msg+"\t-\t"+__stack__
else out=msg+" in file:"+__file__+" @ Line:"+__line__+", Column:"+__col__
console.log(out)}
})
}//end if(DEBUG)
答案 3 :(得分:0)
似乎没有办法做到这一点,所以我一直在使用console.group
console.group(file +' (line '+ line +')');
console.log(data);
console.groupEnd();