推荐简单好用的终端输出彩色内容的开源nodejs工具库

在开发nodejs终端应用程序时,在终端输出带颜色的文本,支持以下特性:

  • 支持按不同数据类型以不同的颜色显示,并且可以配置
  • 支持按DEBUGINFOWARN ERROR FATAL五个级别输出日志
  • 支持输出带颜色的模板字符串
  • 支持自动格式化显示{}[]类型
  • 支持强大的表格输出
    • 支持输出任务列表、进度条、横幅和树等扩展
  • 正确处理中文与英文混排时的对齐问题
开源地址:https://gitee.com/zhangfisher/logsets.git
安装
npm install logsets yarn add logsets pnpm add logsets

指南 模板字符串输出 对模板字符串进行插值后输出着色后的字符串。
import createLogger from "logsets" const logger = createLogger({...}) logger.log("<模板字符串>",<变量1>,<变量1>,...,{end:"\n",append:" "}) logger.log("<模板字符串>",<变量1>,<变量1>,...) logger.log("<模板字符串>",{<变量1>:<值>,<变量1>:<值>},) logger.log("<模板字符串>",{<变量1>:<值>,<变量1>:<值>},{end:"\n",append:" "})

示例如下:
import createLogger from "logsets" const logger = createLogger({...}) // 命名插值变量 logger.log("{a}+{b}={c}",{a:1,b:1,c:2}) // 位置插值变量 logger.log("My name is {}","tom") logger.log("{a}+{b}={c}",1,1,2)

输出效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

默认情况下,每次执行log方法完成后均会导致换行输出。log方法还支持配置输出参数:
for(let i =0 ; i<=100; i++){ logger.log("正在下载:{}",i,{end:"\r"})// 每行输出时最后打印\r回车符,回到行头,从而可以实现下载进度的更新。 } logger.log()// 换行

配置参数
log的参数大于=2个并且最后一个参数是{}时,将最后一个参数视为是输出配置参数。
{ end:"\n",// 行结束字符,默认是换行会导致打印下一行,如\r则不会换行而只是回到行首 append:" "// 每个输出参数自动追加的字符,默认是一个空格 }

按数据类型输出 提供print方法,用来连续输出多个经过着色的参数。
print(arg1,arg2,arg3,.....) print(arg1,arg2,arg3,.....,{end:"\n",append:" "}) // 增加可选的输出参数

输出配置参数:
log方法.
示例
import createLogger from "logsets" const log = createLogger({...})logger.print("String",true,100,()=>{},[1,2,3]) logger.print(null,undefined) logger.print(/^colored$/g) logger.print(new Error("Value Error")) logger.print(new Date()) logger.print(class A{}) logger.print(new (class X{})()) logger.print({name:"tom",age:100,admin:true,posts:["a","b"],values:[1,2,3]},()=>"hello")

输出效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

格式化输出对象 提供format方法,用来带缩进格式和着色过的对象
  • 基本用法
import createLogger from "logsets" const logger = createLogger({...})logger.format({ name:"tom", age:11, admin:true, posts:["经理","主任"], addtrss:{ company:"中华人民共和国北京市二环路", family:"福建省泉州市惠安路1512号" } })

输出效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

  • 优化数组和对象输出
对数组或对象成员数量当超过指定值时,显示省略号并备注总数量。
import createLogger from "logsets" const logger = createLogger({...})logger.format({ values:new Array(10).fill(0).map((v,i)=>i+1), users:{ tom:{name:"tom",age:21,sex:true}, jack:{name:"jack",age:21,sex:false}, jack1:{name:"jack",age:21,sex:false}, jack2:{name:"jack",age:21,sex:false}, jack3:{name:"jack",age:21,sex:false}, jack4:{name:"jack",age:21,sex:false}, jack5:{name:"jack",age:21,sex:false}, jack6:{name:"jack",age:21,sex:false}, jack7:{name:"jack",age:21,sex:false}, jack8:{name:"jack",age:21,sex:false}, jack9:{name:"jack",age:21,sex:false}, jack10:{name:"jack",age:21,sex:false}, jack11:{name:"jack",age:21,sex:false}, jack12:{name:"jack",age:21,sex:false}, } },{Array:{maxItems:5},Object:{maxItems:5}})

maxItems参数用来指定只显示多少项,超出显示省略号并备注总数量。
输出效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

可以配置紧凑模式输出。
import createLogger from "logsets" const logger = createLogger({...})logger.format({ values:new Array(10).fill(0).map((v,i)=>i+1), users:{ tom:{name:"tom",age:21,sex:true}, ..., jack12:{name:"jack",age:21,sex:false}, } },{Array:{maxItems:5,compact:true},Object:{maxItems:5,compact:true}})

compact参数用来指示采用紧凑模式输出
输出效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

显示分割条 logger.separator(width)可以输出一条水平分割线, width参数是可选的,默认是60
输出日志级别 按指定级别输出日志,并会对插值变量进行着色。
logger.debug("<模块字符串>",[位置插值变量列表] || {插值变量列表},"备注信息") logger.info("<模块字符串>",[位置插值变量列表] || {插值变量列表},"备注信息") logger.warn("<模块字符串>",[位置插值变量列表] || {插值变量列表},"备注信息") logger.error("<模块字符串>",[位置插值变量列表] || {插值变量列表},"备注信息") logger.fatal("<模块字符串>",[位置插值变量列表] || {插值变量列表},"备注信息")

示例如下:
import createLogger from "logsets" const log = createLogger({...}) logger.debug("正在执行程序{},还需要{}秒...",["logs",9]) logger.info("正在执行程序{app},还需要{time}秒...",{app:"logs",time:9}) logger.warn("正在执行程序{app},还需要{time}秒...",{app:"logs",time:9},"Line:123") logger.warn("程序执行可能出错\n变量没有定义") logger.error("程序执行可能出错\n变量没有定义") logger.fatal("正在执行程序{a} + {b} , {sex} {name}...",{a:1,b:1,sex:true,name:"voerka"})

输出效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

第二个参数也可以是一个返回[]{}插值变量列表的函数.
logger.warn("My name is {name}, age is {age}",()=> ({name:"Voerka",age:1}))

输出样式可以通过template参数配置模块字符串。
logger.config({ template:"[{level}] {datetime} - {message}" })

template支持以下插值变量:
  • level:日志级别
  • datetime:当前日期时间
  • date:当前日期
  • time:当前时间
  • message:文本信息
表格输出 logsets支持额外引入table插件用来输出表格
基本用法
import createLogger from "logsets" import TablePlugin from "logsets/plugins/table"const log = createLogger({...}) logger.use(TablePlugin)const table = logger.table({ colorize:1,// 是否需要颜色化 0-禁用着色,1-简单着色 2-对表单元里面的对象和数组进行着色,需要额外的计算 grid:2,// 表格线样式,0=不显示表格线,1=只显示垂直表格线,2=显示完整表格线 maxColWidth:32,// 最大列宽,超过会显示省略号 colPadding:" ",// 列额外的空格 header:{ style:"bright"// 表头颜色样式,默认高亮 }, footer:{ style:"darkGray",// 表尾颜色样式 merge:true// 是否合并行 align:"right",// 当合并时对齐方式 }, summary:{// 默认汇总行配置 style:"yellow,bright",// 汇总颜色样式 align:"right",// 汇总对齐方式 }, }) // 输出表头,只支持一个表头 table.addHeader("序号","文件名","大小","下载进度","完成","<备注") // 输出行,一个参数对应一列 table.addRow(1,"readme.md",58713,100,true,"自述文件") table.addRow(2,"index.js",1222,100,true,"源代码文件") table.addRow(3,"consts.js",45981,100,true,"常量定义\n包含默认的配置文件") table.addRow(4,"table.plugin.js",434,100,true,"表格插件\n可选,用来输出表格") table.addRow(5,"rollup.config.js",123,100,true,"构建配置文件") // 输出汇总行 table.addSummary(["已下载",5,"个文件\n累计耗时",56,"秒"],{align:"right"}) table.addRow(6,"colorize.js",6542,60,false,"实现对变量或对象进行着色") table.addRow(7,"stringify.js",5546,34,false,"格式化JSON") table.addRow(8,"utils.js",6456,66,false,"一个工具函数") // 输出表尾 table.addFooter(["共",8,"个文件"]) // 渲染输出 table.render()

输出效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

控制表格线样式
grid=1时,输出效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

grid=2时,输出效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

单元格着色
table.addRow进行增加行时,会根据logsets 全局配置按不同的数据类型显示不同的颜色。
单元格里显示着色对象
默认情况下,在单元格里面显示{...}[...]时会将之转化为字符串进行显示,而不是像format方法一样进行格式化关色后输出。需要额外配置colorize=2才会进行着色输出。
table = logger.table({ colorize:2, })

colorize参数用来控制是否对单元格内容进行着色。
  • 0 : 禁用着色输出
  • 1 : 对简单数据类型进行着色,默认值
  • 2 :对表单元里面的对象和数组进行着色,需要额外的计算
API
table实例具有以下方法:
addHeader 增加表头,一个表格只能指定一个表头,并且表头不支持多行标题。
addHeader("列标题","列标题",......,"列标题")

列标题默认居中显示,指定列标题时可以通过第一个字符来指定该列的显示对齐方式。如:
addHeader("序号","名称",">地址")// 地址列右对齐 addHeader("序号","名称","<地址")// 地址列左对齐

addRow 表格支持添加任意多的普通表行。
addRow(<单元格内容>,<单元格内容>,...,<单元格内容>)

一般情况下,单元格的数量应该与addHeader中列数量一致。如果addRow的参数个数大于addHeader的参数个数,会自动扩展列,取最大的列数量进行显示。
table = logger.table({ grid:2, maxColWidth:12, }) // 表头定义了4列 table.addHeader("名称","性别","出生日期","<居住地址") // 该行提供了5个单元格参数 table.addRow("令狐冲","男","1653/12/2","思过崖","华山派") table.addRow("东方不败","男","1603/6/3","日月神教无敌峰藏经阁") table.addRow("任盈盈","女","1651/2/8","") table.render()

  • 渲染单元格时会按照配置中指定的样式,分别对不同的数据类型显示不同的颜色。
  • 表格行每一列会根据内容自适应宽度显示,但是其最大值受配置参数中的maxColWidth约束,当单元格内容字符宽度超过maxColWidth时会显示省略号。效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

addSummary 增加汇总行,汇总行用来合并所有单元格并显示内容。
addSummary( content,// 单元格内容 { style:"yellow,bright",// 汇总颜色样式 align:"right",// 汇总对齐方式,取值:left,auto,center,right })

  • content参数可以是一个字符串,其显示颜色样式由style指定,默认值是yellow,bright
  • content参数也可以是一个Array,其显示颜色样式会根据数组成员的数据类型进行着色。
    效果图参阅上文。
addFooter 增加表尾,一个表格只能显示一个表尾。
addFooter(content, { style:"darkGray",// 表尾颜色样式 ,当merge=false时生效 merge:,// 是否合并行显示,默认true align:"left",// 对齐方式,取值:left,auto,center,right style:"" })

  • content参数用法与addSummary 一样。
  • 表尾支持可以通过{merge:}来配置是否合并显示或者分列显示。如addFooter([1,2,3,4],{merge:false})
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

  • 默认情况下merge=true,即addFooter("内容")===addFooter("内容",{merge:true})
addSeparator 当grid=0grid=1即不显示网格线时用来增加一条分割线。
addSeparator()// 无参数

进度条 显示一个滚动的进度条。
基本用法
import createLogger from "logsets" import progressbarPlugin from "" const logger = createLogger({...}) logger.use(progressbarPlugin)const pbar = logger.progressbar({ title: "下载进度", //...其他配置参数... })progressbar.begin()// 开始启动进度条 for(let i = 0 ; i <= 60; i++){ await delay() progressbar.value(i) // 更新进度条 } progressbar.end()// 结束进度条

progressbar.demo.js输出效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

配置参数
progressbar支持以下配置参数:
{ title:"<显示标题>" theme: "",// 可选主题色,内置支持default,red,green max: 100,// 进度最大值 min: 0,// 进度最小值 value: 0,// 当前值 // 显示在最后的备注字符串,支持插值变量{value} {percent} {max} {min} dispaly: "{percent}%", width: 60,// 进度条宽度 background: {// 进度条样式 show: true,// 是否显示背景,默认显示,不显示时只显示进度条滑块 style : "bgDarkGray",// 进度条样式 char: " " }, slider: {// 滑块字符 style : "bgWhite",// 进度条样式 char: " ",// } }

  • 所有参数均是可选的,大部份情况下只需要配置maxmin参数即可。
  • dispaly参数用来控制当进度条正在执行时显示在右侧的信息,支持插值变量{value} {percent} {max} {min},比如"{percent}%"显示百分比,"{value}/{max}"显示当前进度值与最大值。
  • width用来指定进度条的宽度,默认是60个字符。
  • background用来控制进度条的背景,默认是暗灰色空格。
  • slider用来控制进度值,默认是白色空格。
API
  • begin()
    开始一个进度条,开始时会隐藏光标
  • value(n)
    更新进度
  • end(note)
    结束进度条,结束后换行
  • stop(note)
    停止进度条,note参数会显示在进度条右侧。
  • error(note)
    进度条出错,note参数会显示在进度条右侧。
任务列表 显示正在进行的任务列表,能显示任务的状态。
基本用法
import createLogger from "logsets" import tasklistPlugin from "" const logger = createLogger({...}) logger.use(tasklistPlugin)// 创建一个任务列表 let tasks = logger.tasklist({})// 新增一个任务列表项 tasks.add("开始扫描文件") // 增加后,任务列表项会处于运行状态,需要分别调用complete/error/stop/skip/todo等结束运行状态 tasks.complete("OK")tasks.add("准备对文件进行预处理") tasks.error("ERROR:文件没有找到")tasks.add("读取文件并编译成exe文件") tasks.skip("SKIP")tasks.add("任务处理被停止") tasks.stop("STOP")tasks.add("任务待办状态") tasks.todo("TODO")

运行后的效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

配置参数
以下所有配置参数均为可选,仅当您对默认样式不满意时进行定制。
{ indent: "",// 列表项缩进字符 style: "",// 标题样式,可以用red,bgYellow等组合,参阅输出样式 width: 60,// 列表项总宽度 refInterval:200,// 列表项渲染间隔,以ms为单位 progressbar:{ style:"darkGray",// 进度条样式,默认是深灰色 char:".",// 进度条字符,当任务处于运行状态时会动态显示 }, // 当新任务项后会自动running,后续可以调用方法结束任务 status:{ running:{ style:"white", symbol:"-", note:"" }, complete:{ style:"green", symbol:"√", note:"OK" }, error:{ style:"red", symbol:"×", note:"ERROR" }, skip:{ style:"yellow", symbol:"○", note:"SKIP" }, stop:{ style:"red", symbol:"●", note:"STOP" }, todo:{ style:"lightCyan", symbol:"□", note:"TODO" } } }

除以上runningcompleteerrorskipstoptodo任务状态外,还支持自定义状态。
let tasks = logger.tasklist({ status:{ connected:{ symbol:"*", style:"green" } } }) tasks.add("正在连接") tasks.connected()

API
  • add(title)
    新增加一个任务,增加后会自动进入运行状态,如果上一个任务还在进行中会自动完成。
  • <状态名称>(note)
    【推荐简单好用的终端输出彩色内容的开源nodejs工具库】使当前正在进行的任务结束并进入指定的状态,传入的可选的note参数显示在最右侧。
横幅 显示一个广告横幅
基本用法
import createLogger from "./index.js" import BannerPlugin from "./banner.plugin.js"const logger = createLogger() logger.use(BannerPlugin)let banner = logger.banner({ })banner.add("Logsets Utility Toolkit") banner.add("Output color elements at the terminal") banner.add("Version: ",1) banner.add("Release: ","2022-01-01") banner.render()

输出效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

banner = logger.banner({ width:60 }) banner.add("Logsets工具库") banner.add("在终端命令行输出彩色文本",{style:"darkGray"}) banner.add()// 输出空行 banner.add("版本: ",1) banner.add("网站: ","http://www.logsets.com",{align: 'left',style:["","lightBlue"]}) banner.add("发布日期: ","2022-01-01",{align: 'right',style:["","lightMagenta"]}) banner.add("作者: ","fisher",{align: 'right',style:["","lightCyan"]}) banner.add("许可证: ","MIT ","GPL ","Apache 2.0",{style:["","red"]}) banner.render()

推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

配置参数
{ indent: " ",// 横幅整体缩进 border: { style: "lightGray",// 边框颜色 width: 1// 边框宽度,0-不显示,1-单线框,2-双线框 }, // 第一行自动作为标题行 title: { align: "center",// 标题对齐方式 style: ["","","green,bright","",""],// 标题样式颜色 wrapper: "☆ ☆ ☆"// 标题包裹符号,用来装饰 }, align: "center",// 横幅行默认对齐方式,默认居中 paddingLeft: 4,// 左右空白宽度,以字符为单位 paddingRight : 4, paddingTop: 1,// 顶部和底部空白行 paddingBottom: 1 }

API
  • add(arg1,arg2,...,{options})
    增加行,支持多个输出参数,每个参数均会按照logger的数据类型的配色进行输出。
    如果最后一个参数是一个{},则支持配置额外的样式和参数。
    banner.add(arg1,arg2,...,{ align:"center | left | right",// 整体居中、居左、居右 // 指定该行整行的色彩 style:"<色彩样式>", // 可以为每一个参数指定颜色。 style:[ "<第1个参数的色彩样式>", "<第2个参数的色彩样式>", "<第3个参数的色彩样式>", ..., "<第n个参数的色彩样式>" ] //当参数个数与style数组长度不匹配时,会取最后一个style[style.length-1] })// text1显示红色,text2/text3/text4显示黄色 banner.add("text1","text2","text3","text4",{style:["red","yellow"]})

树 输出树结构,比如文件夹等。
基本用法
import createLogger from "./index.js" import TreePlugin from "./tree.plugin.js"const logger = createLogger() logger.use(TreePlugin)let tree = logger.tree({ root:"文件结构" }) tree.addNode("readme.md") tree.addNode("package.json") tree.addNode("个人简历.doc",{note:logger.colors.green("√")}) tree.addNode("网络组网方案.docx") tree.addNode("工资清单.xlsx") tree.addNode("",{style:"yellow"}) tree.beginChildren() tree.addNode("readme.md") tree.addNode("package.json") tree.addNode("个人简历.doc") tree.beginChildren() tree.addNode("readme.md") tree.addNode("package.json") tree.addNode("个人简历.doc") tree.addNode("网络组网方案.docx") tree.addNode("工资清单.xlsx",{last:true}) tree.endChildren() tree.addNode("网络组网方案.docx") tree.addNode("工资清单.xlsx",{last:true}) tree.endChildren() tree.addNode("网络组网方案.docx") tree.addNode("工资清单.xlsx",{last:true})

输出效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

树还可以配置为每一个节点输出备注信息。
let tree = logger.tree({ root:"文件结构", note:{ enable:true } }) tree.addNode("readme.md",{note:logger.colors.green("√")}) tree.addNode("package.json",{note:logger.colors.green("√")}) tree.addNode("个人简历.doc",{note:logger.colors.green("√")}) tree.addNode("网络组网方案.docx",{note:logger.colors.green("√")}) tree.addNode("工资清单.xlsx",{note:logger.colors.green("√")}) tree.addNode("",{style:"yellow",note:logger.colors.red("×")}) tree.beginChildren() tree.addNode("readme.md") tree.addNode("package.json") tree.addNode("个人简历.doc") tree.beginChildren() tree.addNode("readme.md") tree.addNode("package.json",{note:logger.colors.red("×")}) tree.addNode("个人简历.doc",{note:"已审核"}) tree.addNode("网络组网方案.docx") tree.addNode("工资清单.xlsx",{last:true}) tree.endChildren() tree.addNode("网络组网方案.docx") tree.addNode("工资清单.xlsx",{last:true}) tree.endChildren() tree.addNode("网络组网方案.docx") tree.addNode("工资清单.xlsx",{last:true})

输出效果如下:
推荐简单好用的终端输出彩色内容的开源nodejs工具库
文章图片

配置参数
{ root: "Root",// 根节点显示内容 width: 60,// 当显示备注信息时,树的总宽度 indent:" ",// 整体缩进字符 node:{ style:"",// 默认节点样式 }, note:{// 节点备注 enable:false,// 是否显示备注信息 style:"darkGrey",// 备注信息的默认样式 char:".",// 备注指示线 } }

API
  • addNode(text,{style,note,last})
    增加一个树节点
    style用来配置节点的显示颜色样式,如style="red"时,节节点文本显示为红色。
    note用来提供备注信息;
    last用来提示这是当前最后一个节点,当添加节点时,树线默认显示├── ,当last=true时,则显示└── ,这样就可以确保最后一个子节点显示正确。
  • beginChildren()endChildren()
    开始和结束一个子节点集。
输出彩色内容 logsets依赖于ansicolors,并且将其挂在了logsets.colors下,因此也可以直接调用来生成彩色内容。
import createLogger from "./index.js" import TreePlugin from "./tree.plugin.js"const logger = createLogger()console.log(ogger.colors.red(text)) console.log(logger.colors.green(text)) console.log(logger.colors.yellow(text)) console.log(logger.colors.blue(text)) console.log(logger.colors.magenta(text)) console.log(logger.colors.cyan(text)) console.log(logger.colors.white(text)) console.log(logger.colors.darkGray(text)) console.log(logger.colors.black()) /.......更加的着色方法请参考ansicolor文档

logger.colors===ansicolor实例,可参考其文档。
全局配置 logsets支持丰富的配置参数,可以自定义输出样式。
默认配置 完整配置如下:
import createLogger from "logsets" const log = createLogger({ indent: "",// 缩进 singleQuotes: false,// 显示单引号 template: "[{level}] {datetime} - {message}",// 模板 compact:false,// 是否采用紧凑模式输出 Array:{ compact : true,// 是否采用紧凑模式输出 maxItems: 100,// 数组最大长度,超过则显示省略号 memo: (value)=> darkGray("(共"+value.length+"项)")// 当数组数量超过maxItems时,显示共几项的备注 }, Object:{ compact:true,// 是否采用紧凑模式输出 maxItems:100,// 成员数量,超过则显示省略号 align:true,// 是否自动对齐 memo:(value)=> darkGray("(共"+value.length+"项)"), }, Function : { style:"lightCyan", format:value=>value.name ? `[Function ${value.name}]` : "()=>{...}" }, AsyncFunction: { style:"lightCyan", format:value=>value.name ? `[AsyncFunction ${value.name}]` : "async ()=>{...}" }, Error: { style:"red", format:e=>`${e.name.firstUpper()}('${e.message}')` }, Null: "darkGray", Undefined: "darkGray", Boolean: "cyan", Number: "yellow", String: "green", Class: { style:"lightCyan", format:value=>`[Class ${value.name}]` }, Instance : { style:"lightBlue", format:value=>`` }, Date: { style:"lightBlue", format:(value)=>`${value.getFullYear()}-${value.getMonth()+1}-${value.getDate()} ${value.getHours()}:${value.getMinutes()}:${value.getSeconds()}` }, Symbol: "blue", RegExp: { style:"magenta", format:(value)=>`${value.toString()}` }, levels:{ align: true,// 是否自动对齐消息 maxLineChars: 90,// 每行最大字符数 memo: "darkGray", debug: "lightGray", info: "dim", warn: "yellow", error: "red", fatal: "red" } })

以上是默认的配置,一般情况不需要进行修改覆盖。
数据类型显示样式 各种数据类型均可以配置显示样式,支持配置ArrayObjectFunctionAsyncFunctionErrorDateNullUndefunedBooleanNumberStringClassInstanceSymbolRegexp
配置数据类型的样式可以按如下方式:
// 1. 简单指定类型的样式名称 { [数据类型名称]:"<样式名称>,<样式名称>,...,<样式名称>" } // 2. 指定类型的样式名称,同时指一个格式化函数来用内容进行格式化 { [数据类型名称]:{ style:"<样式名称>,<样式名称>,...,<样式名称>", format:(value)=>{...<返回格式化后的内容>...} } }

显示样式名称支持设置一个或多个,同时使用多个时采用,分开。
样式名称用来指定以何种前景颜色、背景颜色或修饰样式,支持如下值:
  • 普通前景色:redgreenyellowbluemagentacyanwhitedarkGrayblack
    • 加亮前景色:lightRedlightGreenlightYellowlightBluelightMagenta,lightCyan ,lightGray
  • 普通背景色:bgRedbgGreenbgYellowbgBluebgMagentabgCyanbgWhitebgDarkGraybgBlack
  • 加亮背景色:bgLightRedbgLightGreenbgLightYellowbgLightBluebgLightMagentabgLightCyanbgLightGray
  • 修饰样式:brightdimitalicunderlineinverse
举例如下:
logger.config({ Boolean:"bgLightRed,white" })

代表对Boolean类型数据采用亮红色背景,白色文本方式显示。
注:样式可能受不平操作系统平台差异,部分样式不支持。
文本样式 在上述所有功能中均会使用一个style参数来配置自定义的显示样式。
style参数是一个使用,分割的字符串,可以同时应用1-N个字符串色彩和样式。比如style="bgLightRed,white"代表采用亮红色背景,白色文本方式显示。
版本历史 最新版本:1.0.7
开源地址:https://gitee.com/zhangfisher/logsets.git

    推荐阅读