我正在寻找一个 javascript 记录器,它根据堆栈深度缩进每条消息。例如,如果函数 A 调用函数 B,它应该如下所示:
hi from A
hi from B
如果来自不同堆栈的函数,我还希望它能够为消息着色。这样我就可以跟踪异步事件。
界面必须是这样的:
function B(){ log('hi from B'); }
function A(){ log('hi from A'); B(); }
任何建议将不胜感激:)
我正在寻找一个 javascript 记录器,它根据堆栈深度缩进每条消息。例如,如果函数 A 调用函数 B,它应该如下所示:
hi from A
hi from B
如果来自不同堆栈的函数,我还希望它能够为消息着色。这样我就可以跟踪异步事件。
界面必须是这样的:
function B(){ log('hi from B'); }
function A(){ log('hi from A'); B(); }
任何建议将不胜感激:)
我认为这个功能应该可以帮助你:
var log = function(msg) {
var $level = 0, parent = arguments.callee.caller;
while(parent
&& parent.arguments
&& parent.arguments.callee
&& parent.arguments.callee.caller) {
parent = parent.arguments.callee.caller;
$level = $level + 1;
}
console.info(Array($level).join(" "), msg);
}
以下代码的输出如下:
function B(){ log('hi from B'); }
function A(){ log('hi from A'); B(); }
B();
A();
log
可能会将页面作为父被调用者,因此您可能需要修改输出,例如
console.info(Array($level - 1).join(" "), msg);
请注意,空格字符的数量join(" ")
指定缩进的大小。
我希望这会有所帮助。