我正在通过覆盖默认的console.log来编写我自己的日志记录实用程序,如下所示
console.logCopy = console.log.bind(console);
console.log = function() {
this.logCopy.apply(console, addStampToArgs(arguments));
};
我正在使用chrome的检查器进行调试。
我的方法工作正常,除了一个问题,现在我无法使用chrome检查器功能,它为每个日志行显示<file>:<line-number>
并带有代码链接。
现在它显示了源自我的console.log包装函数的每个日志行。
如何让我的包装函数不被控制台跟踪,以便我得到正确的<file>:<line-number>
?
答案 0 :(得分:0)
我想问题是控制台日志记录工具是副作用的,因此不适合作文。
他们都返回undefined
:
console.log("me")
me
<- undefined
console.warn("me")
me
<- undefined
console.error("me")
me
<- undefined
console.trace()
console.trace()
(anonymous function)
InjectedScript._evaluateOn
InjectedScript._evaluateAndWrap
InjectedScript.evaluate
<- undefined
我也会对Javascript自定义日志记录感兴趣,以便访问类似于printf的漂亮格式化功能,例如: %o,%O,%d,%s,%c,......
console.log("%o", [[{}, 1, "two"]]);
[Array[3]]
0: Array[3]
0: Object
1: 1
2: "two"
length: 3
__proto__: Array[0]
length: 1
__proto__: Array[0]
<- undefined
他们也可以处理循环引用,这很难用JSON.stringify
来实现。
我在谷歌Chrome(金丝雀)源片段中玩这个。
在那里我注意到它通过一个新的代码段方案记录堆栈跟踪信息,但链接只是打开一个空的选项卡,无法访问那里的devtools。
try {
console.trace();
console.log("hi");
FIXME
} catch (exception) {
console.log(exception.stack);
}
console.trace() consolation.js:2
(anonymous function) consolation.js:2
hi consolation.js:3
ReferenceError: FIXME is not defined
at snippets:///14_224:4:5 consolation.js:6
undefined
但是,唉,至于你的问题,我没有答案。
将此作为评论写下来并不会很好。