【发布时间】:2019-07-09 07:47:47
【问题描述】:
我想记录一些消息并希望它们具有不同的颜色。
消息类型有特定的颜色
- 成功将是绿色的
- 错误将显示为红色
- 警告为黄色
在我想记录日期时间之后,它始终是青色。
在那之后,我的日志消息总是白色的。
所以我创建了这个简单的记录器脚本
const consoleColorWhite = '\x1b[37m%s\x1b[0m';
const consoleColorGreen = '\x1b[32m%s\x1b[0m';
const consoleColorRed = '\x1b[31m%s\x1b[0m';
const consoleColorYellow = '\x1b[33m%s\x1b[0m';
const consoleColorCyan = '\x1b[36m%s\x1b[0m';
exports.log = function(type, msg){
var msgType;
var msgTypeColor;
switch (type) {
case 'inf':
msgType = 'INF';
msgTypeColor = consoleColorGreen;
break;
case 'err':
msgType = 'ERR';
msgTypeColor = consoleColorRed;
break;
case 'wrn':
msgType = 'WRN';
msgTypeColor = consoleColorYellow;
break;
default:
msgType = '';
msgTypeColor = consoleColorWhite;
}
if(type !== undefined && type !== null && msgType.length > 0){
msgType = '[' + msgType + ']';
}
var dateTime = new Date();
var date = dateTime.toLocaleDateString();
var time = dateTime.toLocaleTimeString();
var dateTimeString = '[' + date + ' ' + time + ']';
console.log(msgTypeColor, msgType);
console.log(consoleColorCyan, dateTimeString);
console.log(consoleColorWhite, msg);
}
它工作得很好,但是控制台会记录这个结构
如何将所有消息放在一行中?
我可以去
string output = msgType + dateTimeString + msg;
console.log(output);
但我希望行内有不同的颜色。
【问题讨论】:
-
不相关写
type !== undefined是非常错误的,请使用typeof type !== 'undefined'。您正在创建一个名为undefined的变量,并且因为它没有被初始化它值得undefined,所以您认为它有效,但这是错误的。在代码顶部添加const undefined = true;,您将遇到不需要的行为 -
我更新了我的脚本,在脚本的顶部,我保存了我的颜色值