温馨提示×

linux下nodejs日志怎么配

小樊
39
2026-09-02 12:36:30
栏目: 编程语言

在 Linux 下配置 Node.js 日志,通常有**“不用框架的写法”“用成熟日志库”两种思路。下面按常见、实用、可落地**的方式给你讲。


一、最简单:用 Node 自带能力(适合小项目)

1. 输出到控制台(默认)

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

Linux 下运行:

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

二、推荐:使用日志库(生产环境)

✅ 最常用:winston

安装

npm install winston

基础配置(写文件 + 控制台)

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.json()
  ),
  transports: [
    new winston.transports.File({ filename: '/var/log/node/app.log' }),
    new winston.transports.Console()
  ]
});

logger.info('server started');
logger.error('something wrong');

三、按环境区分日志(开发 / 生产)

const transport = process.env.NODE_ENV === 'production'
  ? new winston.transports.File({ filename: '/var/log/node/app.log' })
  : new winston.transports.Console();

四、Linux 下日志管理最佳实践

1. 日志路径

推荐:

/var/log/node/

创建并授权:

sudo mkdir -p /var/log/node
sudo chown -R youruser:youruser /var/log/node

2. 日志切割(非常重要)

Node 本身不切日志,用 Linux 工具:

使用 logrotate

sudo vim /etc/logrotate.d/node

示例:

/var/log/node/*.log {
  daily
  rotate 7
  compress
  missingok
  notifempty
  copytruncate
}

五、用 PM2 管理 Node(强烈推荐)

安装

npm install -g pm2

启动

pm2 start app.js

日志位置

~/.pm2/logs/

查看日志

pm2 logs

PM2 自带:

  • 日志切割
  • 进程守护
  • 重启策略

六、进阶(可选)

需求 方案
结构化日志 winston + json
高性能 pino
集中日志 ELK / Loki / Grafana
审计日志 单独文件 + 权限控制

七、最小可用模板(推荐)

node app.js
├── console(开发)
└── /var/log/node/app.log(生产)

如果你愿意,我可以:

  • 给你 完整 Express 日志配置
  • Docker + Node 日志方案
  • 或按你的 **项目规模(小/中/大)**来配

你现在是哪种场景?

0