Linux Node.js日志轮转怎么做
在Linux服务器上管理Node.js应用日志,推荐使用winston配合winston-daily-rotate-file实现按时间或大小自动轮转。配置datePattern定义日期格式实现按天切割,设置maxSize限制单个文件大小,指定maxFiles保留历史日志数量,支持gzip压缩归档,从而有效避免磁盘空间耗尽,保障系统稳定可靠运行。
在Linux服务器上管理Node.js应用日志,最头疼的莫过于日志文件无限膨胀。如果不加控制,一个持续运行的Node服务很快就能把磁盘空间吃光。业内通用的解法就是**日志轮转**——按时间或大小切割文件,旧日志自动归档或删除。今天聊一个非常成熟的搭配:winston + winston-daily-rotate-file,几乎成了Node生态里的标准配置。

先装好winston库,这是最基本的日志框架:
npm install winston
然后创建日志记录器。通常我们会把不同级别的日志写到不同文件——错误日志单独存,便于排查;所有日志合并一份,用于全量归档。写法很直接:
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
new winston.transports.File({ filename: 'logs/combined.log' })
]
});
做到这一步,日志已经有了,但不会自动轮转。需要引入一个专门做轮转的插件——winston-daily-rotate-file:
npm install winston-daily-rotate-file
接下来就是重头戏:把原来的File传输器替换为轮转版本。配置项很关键——datePattern控制按什么频率切割(比如按每天、每小时),maxSize限定单个文件的最大体积,maxFiles决定保留多久的日志。下面的例子是按小时轮转,每个文件上限20MB,最多保留14天:
const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const errorLogger = new DailyRotateFile({
filename: 'logs/error-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
const combinedLogger = new DailyRotateFile({
filename: 'logs/combined-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [errorLogger, combinedLogger]
});
注意filename里用%DATE%占位符——库会自动把当前时间按datePattern格式替换进去,实现每天/每小时一个独立文件。zippedArchive: true会把历史文件打包成gzip,进一步节省空间。至此,你的Node.js应用日志轮转机制就搭建好了,剩下的就是部署后观察一下磁盘占用是否稳定即可。
最后提醒一点:生产环境中,日志轮转的粒度(比如按小时还是按天)需要根据日志量来权衡。如果是高并发服务,建议按小时甚至分钟级轮转,配合maxFiles控制总保留天数的同时,别忘了监控日志目录的inode消耗。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















