跳到主要内容

认识

2024年12月10日
柏拉文
越努力,越幸运

一、认识


Pino 是一个高性能的日志库,专为速度优化,性能极佳。它的核心设计理念是尽量减少日志记录的开销,使用 JSON.stringify 输出并进行流处理, 专注于 JSON 格式化输出,简洁高效。对于高性能、高并发的应用场景,Pino 更适合;Winston 更注重灵活性。Pino 是现代云原生、高性能 Node.js 应用的首选日志库。

Pino 默认异步输出, 日志不会阻塞主线程。直接 JSON.stringify, 输出为 JSON 格式,避免额外格式化开销。流式输出, 利用 Node.js 流机制,可以直接将日志传输到外部服务。

二、准备


npm install pino

三、语法


3.1 Stdout

Pino 中,默认情况下日志是输出到 **stdout(标准输出)**的

const logger = require('pino')()

logger.info('hello world')

const child = logger.child({ a: 'property' })
child.info('hello child!')

3.2 Persistent Storage

pino.destination() 方法允许你将日志输出到指定的文件路径来实现持久化存储

const fs = require('fs');
const path = require('path');
const pino = require('pino');

// 指定日志文件路径
const logDir = '/var/log';
const logFilePath = path.join(logDir, 'myapp.log');

// 检查并创建目录
if (!fs.existsSync(logDir)) {
fs.mkdirSync(logDir, { recursive: true }); // 递归创建目录
}

// 创建 Pino logger 实例
const logger = pino(pino.destination(logFilePath));

logger.info('This is an info log');
logger.error('This is an error log');