关于node.js:推荐简单好用的终端输出彩色内容的开源nodejs工具库

2次阅读

共计 15502 个字符,预计需要花费 39 分钟才能阅读完成。

在开发 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)

输入成果如下:

默认状况下,每次执行 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")

输入成果如下:

格式化输入对象

提供 format 办法,用来带缩进格局和着色过的对象

  • 根本用法
import createLogger from "logsets"
const logger = createLogger({...})

logger.format({
    name:"tom",
    age:11,
    admin:true,
    posts:["经理","主任"],
    addtrss:{
        company:"中华人民共和国北京市二环路",
        family:"福建省泉州市惠安路 1512 号"
    }
})

输入成果如下:

  • 优化数组和对象输入

对数组或对象成员数量当超过指定值时,显示省略号并备注总数量。

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参数用来指定只显示多少项,超出显示省略号并备注总数量。

输入成果如下:


能够配置紧凑模式输入。

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参数用来批示采纳紧凑模式输入

输入成果如下:

显示宰割条

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"})

输入成果如下:


第二个参数也能够是一个返回 []{}插值变量列表的函数.

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()

输入成果如下:

管制表格线款式

grid=1 时,输入成果如下:

grid=2 时,输入成果如下:

单元格着色

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 时会显示省略号。成果如下:

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/false>,   // 是否合并行显示, 默认 true
    align:"left",          // 对齐形式,取值:left,auto,center,right
    style:""
})
  • content参数用法与addSummary 一样。
  • 表尾反对能够通过 {merge:<true/false>} 来配置是否合并显示或者分列显示。如addFooter([1,2,3,4],{merge:false})

  • 默认状况下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输入成果如下:

配置参数

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")  

运行后的成果如下:

配置参数

以下所有配置参数均为可选,仅当您对默认款式不称心时进行定制。

 { 
    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)

    使以后正在进行的工作完结并进入指定的状态,传入的可选的 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()

输入成果如下:

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()

配置参数

{
    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("<src>",{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})     

输入成果如下:


树还能够配置为每一个节点输入备注信息。

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("<src>",{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})    

输入成果如下:

配置参数

{
    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=>`<Class(${value.constructor.name})>`
    },
    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

正文完
 0