使用附加功能和正确的行号包装console.log

时间:2018-07-18 10:40:33

标签: javascript

我正在努力获取console.log,以保持正确的行号并执行其他功能。

var original = console.log

console.log = function() {

   // Can run additional tasks
   console.warn('additional stuff here');

   // Wrong line number given
   console.log.apply.call(original, console, arguments);

}

console.log('test')

我仔细研究了以下内容:A proper wrapper for console.log with correct line number?

但是,我似乎只能保持正确的行或从提供的答案中运行附加功能,但不能同时提供这两个功能。

谢谢:)

2 个答案:

答案 0 :(得分:1)

使用that answer's approach时行号起作用的原因是,console.log被您要为其指定行号的代码直接调用。在上面的代码中,不是,也不能是因为您想要注入行为。

我唯一想到的解决方案是在代码上运行的Babel插件或类似程序,以便输出的转换后的代码在调用站点上就地插入其他行为 (不在调用的函数中)。例如,它会转换:

console.log("foo");

进入

{console.warn("additional stuff here");console.log("foo");}

或类似。这将是不平凡的(尽管距离那里最复杂的Babel插件很远:-))。

答案 1 :(得分:0)

对于遇到此问题的任何人,我都编写了babel插件来解决此问题:

https://github.com/peteringram0/babel-plugin-console-source