ubuntu

Ubuntu Node.js日志文件如何管理

小樊
33
2025-12-09 23:55:40
栏目: 编程语言

Ubuntu 上 Node.js 日志管理实操指南

一 核心原则与总体架构

二 应用内日志与轮转实践

// logger.js
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' }),
  ],
});

if (process.env.NODE_ENV !== 'production') {
  logger.add(new winston.transports.Console({ format: winston.format.simple() }));
}

module.exports = logger;
// logger-rotate.js
const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');

const transport = new DailyRotateFile({
  filename: 'logs/application-%DATE%.log',
  datePattern: 'YYYY-MM-DD',
  zippedArchive: true,
  maxSize: '20m',
  maxFiles: '14d',
});

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [transport],
});

module.exports = logger;

三 系统级与进程管理方案

/path/to/your/nodejs/app/logs/*.log {
  daily
  missingok
  rotate 7
  compress
  notifempty
  create 0640 root adm
}
  1. 测试与生效:
sudo logrotate -f /etc/logrotate.d/nodejs-app
pm2 start app.js --name my-app
pm2 set pm2:log-date-format "YYYY-MM-DD HH:mm:ss"
pm2 set pm2:max-size "20M"
pm2 set pm2:retain "14d"
pm2 logs my-app
[Service]
ExecStart=/usr/bin/node /path/to/app.js
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=yourapp
journalctl -u yourapp -f
if $programname == 'nodejs' then /var/log/nodejs.log
& stop

四 集中式日志与监控分析

五 最佳实践与维护清单

0
看了该问题的人还看了