Javascript 提供不同级别调试代码的结构
Javascript structure to provide varying levels of debugging code with ease
与许多项目一样,我的 [研究] 计划正在变得非常庞大。我也在努力完成工作和教学之间的斗争。我想有不同数量的 console.log()
语句,只需更改全局变量或类似变量。这类似于在某些 terminal/console 命令中键入 --v
(或类似于 VERBOSE)以获取有关过程中发生的事情的额外帮助。这样对于正常工作,我可以将级别设置为 Normal
,但是当我让学生参与项目时,我可以让他们将级别设置为 Verbose
这样他们就可以看到发生了什么帮助赶上进度,因为并非所有学生都熟悉 JS 及其幽默:)
JS 已经为代码中的不同消息强度提供 console.log()
、console.warn()
和 console.error()
,但我正在寻找类似于 normal.console.log()
的东西, 30ThousandFootHighLevel.console.log()
和 giveMeEverythingYouGot.console.log()
这样我就可以在整个应用程序中包含适当的级别。然后,我会在像地方这样的全球范围内说 consoleLogLevel = 3; // 0-N with N being the most verbose
.
如果我不必写每个日志级别,而是在 giveMeEverythingYouGot.console.log()
显示所有 [lower/inclusive/previous] 级别时获得奖励积分。
有节点包吗?硬代码示例?
这是一个基本的 PLNKR 设置以帮助提供建议。谢谢!
var consoleLogArray = ['NORMAL','MIDDLE','VERBOSE'];
var consoleLogLevel = 3;
$(document).ready( function(){
// Got to let me know we are starting in some cases
console.log('VERBOSE MERSSAGE: Started');
// Some Basic code
var x = 5;
var y = 10;
var check = 2;
if (!x+y === 14){
// This should be a verbose log
// This should only show in Verbose setting
console.error('We have a variable assignment problem')
}
if(x/y === check){
// This should be a middle level
// This should only show in Verbose setting or Middle Setting
console.log('Yup, 10 divided by 5 is still 2...')
}
// This should be a normal level
// This should show in Normal, Middle, and Verbose settings
console.log('Finished with no errors!');
})
我不明白您如何将 verbose
、middle
和 normal
分配给这些日志消息。但我假设您在编写日志语句时知道您希望它达到哪个级别。
那么,这个怎么样?
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
对象来添加任意多个级别。
每个日志记录函数(verbose
、debug
、warn
)的功能几乎相同。我相信您可以编写一些生成这些函数的高级函数。让我们把它留作 reader 的练习。 :)
与许多项目一样,我的 [研究] 计划正在变得非常庞大。我也在努力完成工作和教学之间的斗争。我想有不同数量的 console.log()
语句,只需更改全局变量或类似变量。这类似于在某些 terminal/console 命令中键入 --v
(或类似于 VERBOSE)以获取有关过程中发生的事情的额外帮助。这样对于正常工作,我可以将级别设置为 Normal
,但是当我让学生参与项目时,我可以让他们将级别设置为 Verbose
这样他们就可以看到发生了什么帮助赶上进度,因为并非所有学生都熟悉 JS 及其幽默:)
JS 已经为代码中的不同消息强度提供 console.log()
、console.warn()
和 console.error()
,但我正在寻找类似于 normal.console.log()
的东西, 30ThousandFootHighLevel.console.log()
和 giveMeEverythingYouGot.console.log()
这样我就可以在整个应用程序中包含适当的级别。然后,我会在像地方这样的全球范围内说 consoleLogLevel = 3; // 0-N with N being the most verbose
.
如果我不必写每个日志级别,而是在 giveMeEverythingYouGot.console.log()
显示所有 [lower/inclusive/previous] 级别时获得奖励积分。
有节点包吗?硬代码示例? 这是一个基本的 PLNKR 设置以帮助提供建议。谢谢!
var consoleLogArray = ['NORMAL','MIDDLE','VERBOSE'];
var consoleLogLevel = 3;
$(document).ready( function(){
// Got to let me know we are starting in some cases
console.log('VERBOSE MERSSAGE: Started');
// Some Basic code
var x = 5;
var y = 10;
var check = 2;
if (!x+y === 14){
// This should be a verbose log
// This should only show in Verbose setting
console.error('We have a variable assignment problem')
}
if(x/y === check){
// This should be a middle level
// This should only show in Verbose setting or Middle Setting
console.log('Yup, 10 divided by 5 is still 2...')
}
// This should be a normal level
// This should show in Normal, Middle, and Verbose settings
console.log('Finished with no errors!');
})
我不明白您如何将 verbose
、middle
和 normal
分配给这些日志消息。但我假设您在编写日志语句时知道您希望它达到哪个级别。
那么,这个怎么样?
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
对象来添加任意多个级别。
每个日志记录函数(verbose
、debug
、warn
)的功能几乎相同。我相信您可以编写一些生成这些函数的高级函数。让我们把它留作 reader 的练习。 :)