您的位置:首页 >如何配置Node.js日志以支持高并发
发布于2026-04-26 阅读(0)
扫一扫,手机访问

在高并发环境下配置日志,可不是简单地“打几个字”那么简单。它更像是在为高速运转的系统铺设一条高效、稳定且可追溯的“数据高速公路”。想要这条“路”不堵车、不出错,有几个核心原则必须牢牢把握:
理论说完了,具体怎么落地?这里提供两套经过实战检验的配置方案,你可以根据团队技术栈和具体需求来选择。
方案A 高性能 JSON 日志到文件 + 按时间轮转(Pino)
npm i pino pino-rotateconst pino = require('pino');
const rotate = require('pino-rotate');
rotate({
period: '1d', // 每日轮替
path: 'app.log', // 日志路径
limit: '10m', // 单文件上限
compress: true, // 压缩归档
});
const logger = pino({ level: process.env.LOG_LEVEL || 'info' });
logger.info({ route: '/health', status: 200 }, 'health check ok');
pino-pretty 来美化控制台输出,但切记,这个工具仅限于本地开发使用,千万别带到生产环境去。方案B 多传输与异常安全(Winston)
npm i winston winston-daily-rotate-fileconst winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const rotateTransport = new DailyRotateFile({
filename: 'logs/app-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH,
zippedArchive: true,
maxSize: '20m,
maxFiles: '14d,
});
const logger = winston.createLogger({
level: process.env.LOG_LEVEL || 'info,
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json()
),
defaultMeta: { service: 'my-service' },
transports: [
rotateTransport,
new winston.transports.Console({
format: winston.format.simple(),
}),
],
exceptionHandlers: [rotateTransport], // 未捕获异常也写入
rejectionHandlers: [rotateTransport], // Promise 拒绝也写入
});
logger.info('started');
winston-elasticsearch 传输器,将日志直接、实时地发送过去,实现更强大的搜索和分析能力。应用层面的配置只是第一步,要让日志系统在生产环境中坚如磐石,还需要与运维基础设施紧密配合。
logrotate 这样的工具来做兜底。定期切割、压缩甚至删除旧日志,防止单个日志文件无限增长,吞噬磁盘空间。高并发与安全性,是日志配置中需要持续关注和平衡的两个维度。
requestId 或 traceId,这样即使顺序乱了,也能轻松重组出完整的请求轨迹。最后,如果你需要快速将上述原则和方案落地,可以对照这份清单逐一检查:
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9