【发布时间】:2021-05-16 20:08:18
【问题描述】:
我一直在努力扩展console.log 以制作一个彩色的保留堆栈跟踪关于它被调用的位置。我尝试了一些解决方案,但最终达到了这一点:
export const colorizedLog = (
text: string,
status: keyof typeof ColorStatus = "dark",
...args: any
) =>
console.log.bind(
console,
`%c ${text}`,
`font-weight:bold; color: ${ColorStatus[status]}`,
...args
);
有了这个小binding,我们将能够保留堆栈跟踪,但这里的问题是我们必须在最后使用一个烦人的额外(),因为返回值是函数本身是bind的结果:
colorizedLog(
"Title:",
"info",
"This is a working example")();
我阅读过的其他主要资源如下:
const colorizedLog = (text, color= "#40a7e3", ...args) =>
console.log.bind(
console,
`%c ${text}`,
`font-weight:bold; color:${color}`,
...args
);
colorizedLog("Title:", "#40a7e3", "This is a working example")();
更新:堆栈跟踪
【问题讨论】:
-
非常有趣。你的构建设置是什么?
-
@Werlious,只是简单的 vue(基于 webpack 的配置(babel+ts))
-
如果可以,您能否在代码中添加跟踪信息?
function trace() { try { throw new Error('trace'); } catch(e) { alert(e.stack); } }然后从每个函数调用trace()并发布输出? -
@Werlious,谢谢,我以前用过,但问题将是一个不必要的堆栈跟踪列表将被打印,我们真的不需要它们,输出将是被他们污染了。
-
没问题,但我真的只提到了它,所以我们可以通过一些跟踪来查看范围丢失的位置,因为我不确定 Chrome 或 Typescript 是否负责
标签: javascript typescript bind console.log javascript-debugger