温馨提示×

linux下nodejs日志如何配

小樊
49
2026-09-29 17:40:54
栏目: 编程语言

在 Linux 下配置 Node.js 日志,常见做法分为 基础日志输出、日志文件化、日志轮转、生产级日志方案 几个层次。下面按“从简单到生产可用”给你一套实用方案。


一、最基础:控制台日志(开发用)

console.log('info');
console.error('error');

✅ 适合本地开发
❌ 不适合生产(无文件、无轮转)


二、输出到日志文件(简单方案)

1. 重定向方式(最常用)

node app.js > app.log 2>&1
  • >:标准输出
  • 2>&1:错误也写入

✅ 简单
❌ 不会自动切割


三、使用 PM2(强烈推荐,生产常用)

1. 安装

npm install -g pm2

2. 启动

pm2 start app.js

3. 日志位置

~/.pm2/logs/
  • app-out.log
  • app-error.log

4. 查看日志

pm2 logs
pm2 logs app

5. 日志轮转(重要)

pm2 install pm2-logrotate

默认配置:

  • 最大 10MB
  • 保留 30 个文件

四、Node.js 代码级日志库(推荐)

1. 使用 winston(最流行)

npm install winston

示例:

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

logger.info('服务启动');
logger.error('出错了');

✅ 支持级别、文件、格式
❌ 需要自己处理轮转(可配合 logrotate)


五、Linux 系统级日志(logrotate)

适合 任何 Node 日志文件

示例配置

sudo vi /etc/logrotate.d/node-app

内容:

/var/www/app/logs/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  copytruncate
}

✅ 系统级稳定
✅ 不依赖 Node


六、生产推荐组合(最佳实践)

✅ PM2 + pm2-logrotate
或
✅ Node + winston + logrotate


七、常见坑提醒

  • ❌ 不要只依赖 console.log
  • ❌ 日志不轮转会撑爆磁盘
  • ✅ 错误日志单独文件
  • ✅ 日志加时间 & 级别

如果你愿意,可以告诉我:

  • 是否用 PM2 / Docker / 裸 node
  • 日志要存哪(/var/log?)
  • 是否要 JSON 日志(ELK)

我可以直接给你 现成配置。

0 踩