Javascript 包装控制台日志颜色和行

Javascript 包装控制台日志颜色和行,javascript,console,Javascript,Console,我有这个: //在utils.js中定义 功能l(信息){ if(message.includes('success')){ 返回console.log.bind.call(console.log,console,`c%s`,`color:green;`) }否则{ 返回console.log.bind.call(console.log,console,`c%s`) } } l(“导入成功”)(“导入成功”)//在index.js中执行我建议创建一个对象来分离方法,比如success,fail

我有这个:

//在utils.js中定义
功能l(信息){
if(message.includes('success')){
返回console.log.bind.call(console.log,console,`c%s`,`color:green;`)
}否则{
返回console.log.bind.call(console.log,console,`c%s`)
}
}

l(“导入成功”)(“导入成功”)//在index.js中执行
我建议创建一个对象来分离方法,比如success,fail。但是,仍然需要遵循以下语法。此示例适用于节点js

const记录器={
日志:(…消息)=>console.log(“\x1b[36m%s\x1b[0m],…消息),
信息:(…消息)=>console.log(“\x1b[36m%s\x1b[0m],…消息),
警告:(…消息)=>console.log(“\x1b[330m%s\x1b[0m],…消息),
错误:(…消息)=>console.log(“\x1b[31m%s\x1b[0m,…消息”),
成功:(…消息)=>console.log(“\x1b[32m%s\x1b[0m],…消息),
_原始:console.log
};
常量l=(…消息)=>{
如果(messages.length==1){
如果(消息[0].indexOf(“成功”)!=-1)
log(`c${messages[0]}`,“颜色:绿色;字体大小:16px;”);
else if(消息[0].indexOf(“错误”)!=-1)
log(`c${messages[0]}`,“颜色:红色;字体大小:16px;”);
else-console.log(`c${messages[0]}`,“颜色:蓝色;字体大小:16px;”);
}else console.log(…消息);
};
l(“导入成功”);//在index.js中执行

l(“导入错误”);
而不是
var l=(函数(消息){…})
,为什么不直接使用:
函数l(消息){…}
?此外,将函数包装在括号中也没有任何作用。这是相同的结果。您为什么要绑定到控制台?只有在重写原始代码时才会这样做。我知道。这就是我试图指出的。您的代码比需要的更复杂。最好从最简单的代码开始。如果如果不绑定它,您将丢失行号,有些行号会告诉我它是从我的utils.js执行的。它说,它是从utils.js执行的(在这里我复制了您的函数),但我希望index.js文件中的行号(在这里我复制了l(“导入错误”);)你不能使用上下文我怎么能打印跟踪?是的,因为你正在传递上下文。这里你作为方法调用。我做的是一样的:-D。你可以在文件的开头创建上下文。然后返回方法