如何轮换使用 pino-multi-stream 生成的日志文件?
Posted
技术标签:
【中文标题】如何轮换使用 pino-multi-stream 生成的日志文件?【英文标题】:How to rotate log files that generate with pino-multi-stream? 【发布时间】:2020-12-30 21:14:48 【问题描述】:我在我的 node.js 项目中使用 pino-multi-stream npm 包,如下所示:
const fs = require('fs');
const pino = require('pino');
const multistream = require('pino-multi-stream').multistream;
const path = require('path');
const logDirectory = path.join(__dirname, '..', 'logs');
const streams = [
stream: fs.createWriteStream(`$logDirectory/info.log`) ,
level: 'info', stream: fs.createWriteStream(`$logDirectory/info.log`) ,
level: 'debug', stream: fs.createWriteStream(`$logDirectory/debug.log`) ,
level: 'warn', stream: fs.createWriteStream(`$logDirectory/warn.log`) ,
level: 'error', stream: fs.createWriteStream(`$logDirectory/error.log`) ,
level: 'fatal', stream: fs.createWriteStream(`$logDirectory/fatal.log`)
];
const logger = pino( level: 'debug' , multistream(streams));
export pino, logger ;
并使用像这样的记录器:
logger.info(`Ready on localhost:$port`);
logger.error('error message');
logger.warn('warning message');
...
现在我的项目中的日志目录中有多个日志文件。
我的问题是:
如何旋转这些文件(例如“每日”旋转,使用 npm 包,如“file-stream-rotator”)?
【问题讨论】:
【参考方案1】:只需将 file-stream-rotator 获取的流传递给 pino-multi-stream。
level: 'info', stream: fs.createWriteStream(`$logDirectory/info.log`) ,
到
level: 'info', stream: require('file-stream-rotator').getStream(filename:`$logDirectory/info.log`, frequency:"daily") ,
【讨论】:
以上是关于如何轮换使用 pino-multi-stream 生成的日志文件?的主要内容,如果未能解决你的问题,请参考以下文章