Winston 3日志库支持使用的合法颜色列表有哪些?
Winston 3 日志库合法自定义颜色说明
报错原因
Winston 3的颜色功能依赖底层logform包调用的colors.js预设色值,仅支持内置的固定颜色名,不支持直接传入十六进制色值、brown/pink这类非预设的自定义颜色名,你遇到的TypeError: colors[Colorizer.allColors[lookup]] is not a function就是使用了不在允许列表内的颜色值导致的。
官方允许的完整颜色列表
所有可直接在winston.addColors中使用的合法值如下:
基础前景色
- black
- red
- green
- yellow
- blue
- magenta
- cyan
- white
- gray
- grey
高亮前景色
- brightRed
- brightGreen
- brightYellow
- brightBlue
- brightMagenta
- brightCyan
- brightWhite
背景色
- bgBlack
- bgRed
- bgGreen
- bgYellow
- bgBlue
- bgMagenta
- bgCyan
- bgWhite
- bgBrightRed
- bgBrightGreen
- bgBrightYellow
- bgBrightBlue
- bgBrightMagenta
- bgBrightCyan
- bgBrightWhite
样式修饰
- bold
- dim
- italic
- underline
- inverse
- hidden
- strikethrough
自定义十六进制/特殊颜色方案
如果需要使用十六进制色值、pink/brown这类自定义颜色,可以不依赖Winston内置的colorize格式,自己通过printf格式配合chalk这类颜色库实现,示例如下:
const chalk = require('chalk'); const winston = require('winston'); const customLogFormat = winston.format.printf(({ level, message, timestamp }) => { // 自定义颜色映射,支持任意chalk支持的色值 const levelColorMap = { info: chalk.hex('#2E6E3E'), error: chalk.hex('#A52A2A'), // 对应brown warn: chalk.hex('#FFC0CB'), // 对应pink debug: chalk.cyan }; return `${timestamp} ${levelColorMap[level](level)}: ${message}`; }); const logger = winston.createLogger({ format: winston.format.combine( winston.format.timestamp(), customLogFormat ), transports: [new winston.transports.Console()] });
内容的提问来源于stack exchange,提问作者martinho
相关产品推荐
相关产品推荐

