Linux环境下 Node.js 日志存储优化指南
一 核心优化策略
二 配置与代码示例
LOG_LEVEL=debug node app.jsconst logLevel = process.env.LOG_LEVEL || 'info';
const logger = require('pino')({ level: logLevel });
logger.info('上线完成');
const pino = require('pino');
const logger = pino({
level: 'info',
transport: {
target: 'pino/file',
options: { destination: '/var/log/myapp.log', sync: false } // 异步写入
}
});
// 批量记录(减少 I/O 次数)
for (let i = 0; i < 100; i++) logger.info({ i }, 'batch log');
const { createLogger, format, transports } = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const transport = new DailyRotateFile({
filename: '/var/log/myapp/application-%DATE%.log',
datePattern: 'YYYY-MM-DD-HH',
zippedArchive: true,
maxSize: '20m',
maxFiles: '14d'
});
const logger = createLogger({
level: 'info',
format: format.combine(format.timestamp(), format.json()),
transports: [transport, new transports.Console({ format: format.simple() })]
});
/var/log/myapp/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 node node
}
三 存储与保留策略
四 集中化与监控告警
五 性能影响与排障要点