温馨提示×

Ubuntu如何开启Nodejs日志

小樊
47
2026-08-20 11:36:23
栏目: 编程语言

在 Ubuntu 上“开启 Node.js 日志”一般不是系统层面的开关,而是由你的 Node.js 应用/进程管理方式决定。下面按常见场景给你一套最实用的做法。


一、最简单:直接运行并输出日志(开发时用)

node app.js

日志会直接输出到终端(stdout / stderr)。

重定向到文件

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

✅ 适合临时测试


二、使用 PM2(✅ 强烈推荐,生产环境)

1️⃣ 安装 PM2

sudo npm install -g pm2

2️⃣ 启动应用

pm2 start app.js --name my-app

3️⃣ 查看日志

pm2 logs my-app

4️⃣ 日志文件位置

~/.pm2/logs/

例如:

my-app-out.log
my-app-error.log

5️⃣ 设置自动重启 & 开机启动

pm2 startup
pm2 save

最常用的 Node.js 日志方案


三、使用 systemd(Ubuntu 官方服务方式)

1️⃣ 创建服务文件

sudo nano /etc/systemd/system/node-app.service

2️⃣ 示例配置

[Unit]
Description=Node.js App
After=network.target

[Service]
ExecStart=/usr/bin/node /home/ubuntu/app/app.js
WorkingDirectory=/home/ubuntu/app
Restart=always
User=ubuntu
StandardOutput=append:/var/log/node-app/app.log
StandardError=append:/var/log/node-app/error.log

[Install]
WantedBy=multi-user.target

3️⃣ 创建日志目录

sudo mkdir -p /var/log/node-app
sudo chown ubuntu:ubuntu /var/log/node-app

4️⃣ 启动服务

sudo systemctl daemon-reload
sudo systemctl start node-app
sudo systemctl enable node-app

5️⃣ 查看日志

journalctl -u node-app -f

cat /var/log/node-app/app.log

✅ 适合系统级服务


四、在 Node.js 代码中记录日志(推荐)

使用 winston(最流行)

npm install winston
const winston = require('winston');

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

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

✅ 多文件、级别控制、按日期分割


五、如果是 Express 项目

使用 morgan

npm install morgan
const morgan = require('morgan');
app.use(morgan('combined'));

输出 HTTP 访问日志


六、常见问题排查

Node.js 没日志?

  • 是否用 console.log
  • 是否被 PM2 / systemd 接管?
  • 是否输出到 stderr?

日志太大?

  • PM2 + pm2-logrotate
  • winston 按日期切割

✅ 推荐组合(最佳实践)

场景 推荐
生产环境 PM2 + winston
系统服务 systemd + 文件日志
开发 console.lognode app.js

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

  • ✅ 是 生产还是开发
  • ✅ 是否用了 PM2 / Docker / Express
  • ✅ Ubuntu 版本

我可以给你一套完全定制的日志方案

0