「 我只需要两种信息输出方式 1. ora
2. winston
」
版本 | 与日期 | 最新更新 | 更多 |
---|---|---|---|
commit | ⏰ 2018 8.15 | 源码解释 |
欢迎 👏 勘误/校对/更新贡献 😊 具体贡献请看
help me live , live need money 💰
那么 第一种日志, 就是使用winston 「关于一切的日志」
于是, 第二种日志, 就是使用等待 转圈圈的ora 优雅的终端等待
第三种调试 debug 需要设置node运行时的环境变量, 以达到相关调试
信息的输出, 这种日志其实可以与 第一种日志 换一下也可以
但这更像是流程查看, 也许下次吧
命令行获取用户的 -D
或其他值的定义,来选择 日志类型
const twoLog = require('two-log');
let D = cli.flags['D'] ? true : false;
let l = twoLog(D);
主要是为了对应
ora
, 而winston
也就是不同样子的console.log
start
开始text
换字stop
结束
我们来看看对应日志的三个阶段
const ora = require('ora');
const spinner = ora('Loading unicorns').start(); // start 🎩 字, 还有颜色
setTimeout(() => {
spinner.color = 'yellow';
spinner.text = 'Loading rainbows'; // text 阶段 可以换字, 还有颜色
}, 1000);
- stop 阶段, 有几种可能性
spinner.stop() // 就没了, 换个行
spinner.succeed([text]) // 打个勾 ✅, 结束
spinner.fail([text]) // 打个差 ❌, 结束
spinner.warn([text]) // ⚠️, 结束
这个库的日志, 在三个阶段, 其实差不多一样的
只是选择哪种等级的输出而已
const levels = {
error: 0,
warn: 1,
info: 2,
verbose: 3,
debug: 4,
silly: 5
};
好了, 看了两种日志的表现, 我们进入库吧
"main": "dist/two-log.js",
"bin": "cli.js",
"scripts": {
"test": "nyc ava -v -s",
"prepublish": "npm run build",
"build": "microbundle",
命令行cli.js
文件只是一个demo, 让你自观感受
我用了
microbundle
压缩构建,index.js
是源代码
简单用文字讲讲:
-
导入两个库
-
因为是二选一, 所有准备 文件的全局变量
LOGGER
, 和是否调试的全局变量D
-
初始化
two-log
, 因为winston
的初始化有需要自定义,
3.1 所以提供api给用户
let API = {
ora: Ora, // Ora 源
log: winston, // winston 源
setLog: options => {
logOpts = Object.assign({}, defaultWinston, options); // 以及可以 覆盖默认的选项 的函数
},
};
3.2 一个命令行只需要一个日志,所以我上锁了
if (LOCK) {
throw new TypeError(`Set two-log debug just only one,❌`);
}
当然这也是为了, 日志的生命与程序的生命周期联系在一起, 一起开始, 一起结束
3.3 并返回 log对象
// log对象, 当然你可以用其他变量
return {
start: loggerStart,
text: loggerText,
stop: loggerStop,
one: oneOra,
};
oneOra
是为了只显示一次 正确/错误/警告 的信息
- loggerStart-根据用户与初始化, 拿到唯一的日志,并存入
LOGGER
loggerStart === log.start
/**
* @description start logger
* @param {string} str
* @param {string} options.ora ora color
* @param {string} options.log winston log level
* @param {string} options.only only one {ora|log} 其中这一个选项, 可以自己设置只能是哪种日志能被创建
*/
function loggerStart(str, options) {
创建 是 根据
D
与only
当然还有LOGGER
是否存在的值 决定的
- loggerText 换文本与或颜色
/**
* @description set logger text
* @param {String} str
* @param {string} options.ora ora color
* @param {string} options.log winston log level
* @param {string} options.only only one {ora|log} 其中这一个选项, 可以自己设置只能是哪种日志能被输出
*/
function loggerText(str, options) {
文本 是 根据
D
与only
当然还有LOGGER
是否存在的值 决定的
- loggerStop 结束日志与清空全局变量
/**
* @description logger stop
* @param {string} str
* @param {string} options.ora ora {fail|succeed|warn} https://github.com/sindresorhus/ora#instance 表现一下程序的结果
* @param {string} options.log winston log level
* @param {string} options.only only one {ora|log} 其中这一个选项, 可以自己设置只能是哪种日志能被输出
*/
function loggerStop(str, options) {
因为是结束, 总要打个东西, 说明程序是否正确
结束 是 根据
D
与only
当然还有LOGGER
是否存在的值 决定的
散花 🌹