如何在包装Firebug(或类似的)控制台api时访问行号

Oll*_*rds 9 javascript console firebug logging line-numbers

我已经包装了控制台API,以提供精细的日志记录级别以及其他一些糖功能.

这很好,唯一的问题是firebug(或其他任何控制台)将始终报告日志来自控制台API本身的行号.

你怎么建议我让控制台记录我调用包装函数的行号?

我更喜欢跨浏览器解决方案,但没有一个firebug插件可能是一个良好的开端.

我这样称呼我的登录功能:

db.log(db.LogLevel.WARN, "Blah Blah Blah");
Run Code Online (Sandbox Code Playgroud)

Oll*_*rds 0

所以最近这个问题再次出现,所以我决定重新审视它。

现在我年纪更大了,也更聪明了,我很清楚有一个更好的解决方案,然后我试图做的就是按原样调用控制台函数,但在级别降低时有选择地用虚拟函数替换它们。这为我提供了细粒度的日志记录和准确的行号报告。我之前的解决方案丢失了一些功能,但我认为这是一个可以接受的妥协。

这是我的新日志记录库的部分片段,其中显示了主要解决方案

...
levels : ["debug","info","warn","error"],

    init : function(minLevel) {
        var params = abm.getUrlParams();
        minLevel = params["debug"] || minLevel;

        //TODO: firebug lite
        window.console = window.console || {};

        var clear = false;
        for (var i=0; i<self.levels.length; i++) {
            var level = self.levels[i];
            originalFunctions[i] = originalFunctions[i] 
            || console[level] || fallback;

            if (level && (clear || level===minLevel)) {
                console[level] = originalFunctions[i];
                clear=true;
            } else {
                console[level] = suppressed(level);
            }
        }

    }
...
Run Code Online (Sandbox Code Playgroud)

您可以在这里查看完整内容:https://github.com/antiBaconMachine/abm-log