pino-smart

Pino 日志行美化工具

Usage no npm install needed!

<script type="module">
  import pinoSmart from 'https://cdn.skypack.dev/pino-smart';
</script>

README

pino-smart

介绍

Pino 日志行美化工具

安装

# 1. 作为工具使用
npm install pino-smart -g
# 2. 作为项目引用使用
npm install pino-smart

使用

1. 作为工具使用

node server.js | pino-colada

2. 作为项目引用使用

  1. 作为 pino prettifier 使用

    const pino = require('pino');
    const logger = pino({
      prettyPrint: {},
      prettifier: require('pino-smart')
    });
    logger.info('hi');
    
  2. 使用流的形式直接输出

    const pino = require('pino');
    const SmartStream = require('pino-smart/stream');
    const stream = new SmartStream();
    
    const logger = pino({
      level: 'info',
      stream
    });
    stream.pipe(process.stdout);
    
    logger.info('hi');
    

    Unicode and Windows terminal 终端输出乱码, 可以转换终端编码为 UTF-8 形式。执行: chcp 65001

功能

1. 格式化 knex sql 日志

要想要正确的美化 knex sql 日志,需要使用 pino 记录 knex sql

const pino = require('pino');
const logger = pino({
  level: 'info'
});

const knex = require('knex')({
  client: 'mysql2',
  connection: connectStr,
  debug: true,
  log: {
    warn(message) {
      logger.warn(message);
    },
    error(message) {
      logger.error(message);
    },
    deprecate(message) {
      logger.info(message);
    },
    debug(message) {
      if (message.sql) {
        logger.info(message);
      } else {
        logger.debug(message);
      }
    },
  }
});
// 验证应用是否启动 knex.raw().select('select 1')
// 应用启动时,先清空设备列表
knex.raw().select('select 1')
  .then(() => {
    logger.info('Connection has been established successfully.')
  })
  .catch(err => {
    logger.error(err);
  });