认识
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');