在 Linux 上开启 Node.js 日志,通常有几种常见方式,取决于你是本地运行 Node 脚本、用 PM2 管理、还是写 Web 服务(如 Express)。下面按场景说明:
Node.js 默认会把日志输出到终端:
node app.js
常见写法:
console.log('普通日志');
console.error('错误日志');
日志会输出到:
stdout(控制台)node app.js > app.log 2>&1
node app.js >> app.log 2>&1 &
说明:
>>:追加写入2>&1:错误也写入&:后台运行npm install -g pm2
pm2 start app.js
pm2 logs
pm2 logs app
默认在:
~/.pm2/logs/
pm2 start app.js \
--log /var/log/node/app.log \
--error /var/log/node/app-error.log \
--output /var/log/node/app-out.log
npm install morgan
const express = require('express');
const morgan = require('morgan');
const fs = require('fs');
const app = express();
const logStream = fs.createWriteStream('/var/log/node/access.log', { flags: 'a' });
app.use(morgan('combined', { stream: logStream }));
npm install winston
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({ filename: '/var/log/node/app.log' })
]
});
logger.info('服务启动');
如果你用 systemd 管理 Node 服务:
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
StandardOutput=append:/var/log/node/app.log
StandardError=append:/var/log/node/error.log
日志会由系统统一管理:
journalctl -u node-app
| 场景 | 推荐方式 |
|---|---|
| 本地调试 | console.log |
| 生产运行 | PM2 |
| 服务器标准 | systemd + 日志文件 |
| Web 请求 | morgan |
| 复杂日志 | winston / pino |
如果你能告诉我:
我可以给你更精确的配置示例。