查看 Node.js 的运行日志,取决于运行方式和是否配置了日志系统。下面按常见场景给你一份实用指南。
如果你是这样启动的:
node app.js
那么日志通常直接输出在终端:
console.log() → 标准输出console.error() → 标准错误✅ 查看方式:
node app.js > logs/out.log 2> logs/error.log
nohup node app.js > logs/app.log 2>&1 &
查看日志:
tail -f logs/app.log
pm2 logs
查看指定应用:
pm2 logs app-name
实时查看:
pm2 logs --lines 100
~/.pm2/logs/
包含:
app-name-out.logapp-name-error.logdocker logs 容器ID
实时查看:
docker logs -f 容器ID
✅ 前提:日志输出到 stdout / stderr(不要写到文件)
const fs = require('fs');
fs.appendFileSync('logs/app.log', `[${new Date()}] 启动服务\n`);
查看:
tail -f logs/app.log
⚠️ 不推荐直接用 fs.writeFile,会覆盖内容
const winston = require('winston');
const logger = winston.createLogger({
transports: [
new winston.transports.File({ filename: 'logs/error.log', level: 'error' }),
new winston.transports.File({ filename: 'logs/combined.log' })
]
});
logger.info('服务启动');
logger.error('发生错误');
日志文件:
logs/combined.log
logs/error.log
# 实时查看日志
tail -f app.log
# 查看最近 100 行
tail -n 100 app.log
# 搜索错误
grep -i error app.log
# 查看 Node 进程
ps -ef | grep node
| 场景 | 推荐方式 |
|---|---|
| 本地开发 | console.log |
| 服务器 | PM2 |
| 容器 | stdout + docker logs |
| 生产环境 | winston + PM2 |
| 排错 | tail / grep |
如果你愿意,可以告诉我:
我可以给你更精确的配置方案。