温馨提示×

Ubuntu Nodejs日志怎么开启

小樊
34
2026-07-10 05:10:51
栏目: 编程语言

Ubuntu 上,Node.js 本身没有专门的“日志开关”,日志是否生成、如何开启,主要取决于 你用的启动方式、框架和运行环境。下面按常见场景给你一个完整说明。


一、最直接的方式:控制台日志(最常用)

Node.js 默认就支持日志输出,不需要额外开启:

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

运行:

node app.js

如果你是用 PM2 / systemd / Docker,日志会被重定向到对应地方(见下文)。


二、使用 PM2(强烈推荐,Ubuntu 上最常见)

1️⃣ 安装 PM2

sudo npm install -g pm2

2️⃣ 启动项目

pm2 start app.js --name my-app

3️⃣ 查看日志

pm2 logs my-app
pm2 logs my-app --lines 100

日志默认位置:

~/.pm2/logs/

4️⃣ 开启并持久化日志

pm2 startup
pm2 save

这是 Ubuntu 上最推荐的方式


三、使用 systemd(生产服务器常用)

1️⃣ 创建服务文件

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

示例:

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

[Service]
ExecStart=/usr/bin/node /home/ubuntu/app/app.js
Restart=always
User=ubuntu
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=node-app

[Install]
WantedBy=multi-user.target

2️⃣ 启动服务

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

3️⃣ 查看日志

journalctl -u node-app -f

✅ 日志由 systemd + journald 管理


四、Express / Koa 等 Web 框架日志

✅ Express + Morgan

npm install morgan
const express = require('express');
const morgan = require('morgan');

const app = express();
app.use(morgan('combined'));

app.listen(3000);

日志会输出到 stdout(可被 PM2 / systemd 捕获)


五、写入本地日志文件(手动)

const fs = require('fs');
const path = require('path');

const logStream = fs.createWriteStream(
  path.join(__dirname, 'app.log'),
  { flags: 'a' }
);

console.log = (msg) => {
  logStream.write(`[LOG] ${msg}\n`);
};

⚠️ 不推荐大型项目这样写,建议用日志库


六、专业日志库(推荐)

✅ 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('出错了');

七、快速选择建议

场景 推荐方式
本地开发 console.log
Ubuntu 服务器 PM2
生产级服务 systemd + journald
Web 请求日志 morgan
复杂日志 winston / pino

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

  • ✅ Ubuntu 版本
  • ✅ Node.js 启动方式(node / PM2 / docker)
  • ✅ 是否 Express / NestJS / 原生

我可以 直接给你一套可用的日志配置方案

0