Javascript结构可以轻松提供不同级别的调试代码

时间:2015-06-01 15:00:42

标签: javascript console.log

与许多项目一样,我的[研究]计划正在变得越来越大。我还在完成工作和教学之间的斗争。我希望有不同数量的console.log()语句,只需更改全局变量或类似变量。这类似于在某些终端/控制台命令中键入--v(或类似于VERBOSE)以获得进程中正在进行的操作的额外帮助。这种方式对于正常工作,我的级别可以是Normal,但是当我让学生进入项目时,我可以让他们将级别设置为Verbose,这样他们就可以看到发生了什么帮助赶上,因为并非所有学生都熟悉JS及其幽默:)

JS已经为console.log()console.warn()console.error()提供了代码中不同的消息强度,但我正在寻找类似于normal.console.log(),{{ 1}}和30ThousandFootHighLevel.console.log()所以我可以在整个应用程序中包含适当的级别。那么,我会在像地方这样的全球范围内说giveMeEverythingYouGot.console.log()

如果我不必编写每个日志级别,而是consoleLogLevel = 3; // 0-N with N being the most verbose显示所有[较低/包含/之前]级别时,

奖励积分。

任何节点包?硬代码示例? 这是一个基本的PLNKR设置,可以帮助您提供建议。谢谢!

giveMeEverythingYouGot.console.log()

1 个答案:

答案 0 :(得分:2)

我不明白您如何将verbosemiddlenormal分配给这些日志消息。但是,当你在日志语句中写下你想要的级别时,我会假设你知道。

那么,这个怎么样?

log = {
    order: {
        "verbose": 0,
        "debug": 1,
        "warn": 2
    },

    log_level: "warn",

    verbose: function (arguments) {
        if (this.order[this.log_level] <= this.order["verbose"]) {
            console.log(arguments);
        }
    },

    debug: function (arguments) {
        if (this.order[this.log_level] <= this.order["debug"]) {
            console.log(arguments);
        }
    },

    warn: function (arguments) {
        if (this.order[this.log_level] <= this.order["warn"]) {
            console.log(arguments);
        }
    }
}

log.verbose("This is verbose"); // doesn't print
log.debug("This is debug");     // doesn't print
log.warn("This is warn");       // prints

log.log_level = "verbose";      // change what level of messages we want

log.verbose("This is verbose"); // prints
log.debug("This is debug");     // prints
log.warn("This is warn");       // prints

这样日志语句就是语义的。要发送详细日志,请使用该名称调用函数:log.verbose。您可以通过扩展order对象来添加任意多个级别。

每个日志记录功能(verbosedebugwarn)的功能几乎完全相同。我确定你可以编写一些生成这些函数的高级函数。让我们把它作为读者的练习。 :)