美文网首页
轻量的记录格式化和输出组件

轻量的记录格式化和输出组件

作者: 平仄_pingze | 来源:发表于2018-03-15 21:03 被阅读10次

功能

  1. 格式化、带颜色地打印输出到控制台。
  2. 格式化并输出到文件。

优点

  1. 不用改动代码,直接替换console。
  2. 零依赖,直接引入代码。

代码

const util = require('util');

const levels = ['log', 'info', 'warn', 'error'];

const colorCodeMap = {
  red: 31,
  green: 32,
  yellow: 33,
  blue: 34,
  purple: 35,
  cyan: 36,
  gray: 37,
};

const levelColorMap = {
  info: 'green',
  warn: 'yellow',
  error: 'red',
};

function coloring(str, color) {
  const colorCode = colorCodeMap[color];
  return `\x1b[${colorCode}m${str}\x1b[0m`;
}

function getTimeString() {
  function pad(num, n) {
    num = ~~num;
    return Array((n - num.toString().length + 1)).join(0) + num;
  }
  const now = new Date();
  return `${pad(now.getHours(), 2)}:${pad(now.getMinutes(), 2)}:`
    + `${pad(now.getSeconds(), 2)}:${pad(now.getMilliseconds(), 3)}`;
}

module.exports = (options) => {
  options = options || { console: true };
  for (let level of levels) {
    global.console[level] = (...args) => {
      if (!options.console && !options.file) {
        return;
      }
      level = level === 'log' ? 'info' : level;
      const prefix = `[${getTimeString()}]`;
      const levelStr = `[${level.toUpperCase()}]`;
      const base = util.format.apply(null, args) + '\n';
      const color = levelColorMap[level];
      const output = coloring(prefix + levelStr + ' - ', color) + base;
      if (options.console) {
        process.stdout.write(output);
      }
      if (options.file) {
        require('fs').appendFile(options.file, prefix + levelStr + ' ' + base, 'utf-8', () => {});
      }
    };
  }
};

使用

require('./logger')({ file: 'output.log' }); // 输出到console和文件
require('./logger')(); // 只输出到console
require('./logger')({ console: false }); // 不输出(用于生产环境)

相关文章

  • 轻量的记录格式化和输出组件

    功能 格式化、带颜色地打印输出到控制台。 格式化并输出到文件。 优点 不用改动代码,直接替换console。 零依...

  • Ruby:时间格式化

    本文记录ruby中常用到的时间格式的相关方法 获取Date&Time组件 格式化时间和日期 输出结果 时间格式化指...

  • Python print 格式化输出

    format 的使用方式如下: 输出为: 另,格式化输出 %s 和 %d 参见:格式化输出 %s 和 %d

  • jq遍历map

    假设json定义如下: 输出key 格式化key 输出value 格式化value 输出key和value

  • python 用法积累

    print 格式化输出 click to 格式化输出 json使用实例 re使用实例 one eval 和 jso...

  • Vant Weapp - 有赞出品的免费开源微信小程序组件库

    轻量可靠的小程序UI组件库,主流移动组件库 Vant 的微信小程序版本。 Vant Weapp 和 Vant 的区...

  • 小程序vant-weapp的日历组件的使用

    话不多说,记录一下这个框架的使用~小程序使用轻量、可靠的小程序 UI 组件库 vant-weappGithub源码...

  • 入门输入输出篇

    python 的输入和输出 输出 print('hello') 格式化输出: 命令行: >>> 'Hello, %...

  • 开发利器IDEA的常用技巧

    常用快捷键记录 输出快速输出:sout 代码格式化: ctrl + alt + L 卡死时弹出file : alt...

  • 轻量组件化方案

    清量组件化方案一代目 参考得到的方案,做了部分修改项目地址 一. 组件化我们要实现什么: 1.各模块可以单独运行 ...

网友评论

      本文标题:轻量的记录格式化和输出组件

      本文链接:https://www.haomeiwen.com/subject/gulkqftx.html