pino-multi-stream是一个用于生成日志文件的Node.js模块,它可以将日志输出到多个目标。如果想要旋转使用pino-multi-stream生成的日志文件,可以按照以下步骤进行操作:
npm install pino-multi-stream
const pino = require('pino');
const multistream = require('pino-multi-stream');
const fs = require('fs');
function rotateLogFile(logFilePath, maxFileSize) {
const stats = fs.statSync(logFilePath);
const fileSizeInBytes = stats.size;
if (fileSizeInBytes >= maxFileSize) {
const rotatedLogFilePath = `${logFilePath}.${Date.now()}`;
fs.renameSync(logFilePath, rotatedLogFilePath);
}
}
multistream
函数来配置日志输出。以下是一个示例配置,将日志同时输出到控制台和文件,并在文件大小达到1MB时进行旋转:const logFilePath = 'path/to/log/file.log';
const maxFileSize = 1024 * 1024; // 1MB
const streams = [
{ stream: process.stdout }, // 输出到控制台
{ stream: fs.createWriteStream(logFilePath, { flags: 'a' }) } // 输出到文件
];
const logger = pino({}, multistream(streams));
在上述示例中,streams
数组定义了两个输出流,一个是process.stdout
,即控制台输出流,另一个是通过fs.createWriteStream
创建的文件输出流。flags: 'a'
表示以追加模式打开文件,确保日志会被追加到文件末尾。
logger
对象来记录日志。例如:logger.info('This is an info log message');
logger.error('This is an error log message');
当日志文件大小达到1MB时,rotateLogFile
函数将被调用,旧的日志文件将被重命名为带有时间戳的新文件。
请注意,以上示例仅展示了如何使用pino-multi-stream生成日志文件并进行旋转。在实际应用中,您可能还需要考虑日志文件的备份、定时清理等其他方面的需求。
领取专属 10元无门槛券
手把手带您无忧上云