在 Debian 上分析 Node.js 日志,通常取决于你日志写在哪、用什么方式记录。下面按常见场景系统说明,从“在哪看”到“怎么分析”。
如果你直接运行:
node app.js
日志会输出到 stdout / stderr。
如果通过 systemd 管理:
journalctl -u your-node-service.service -f
常见路径:
/var/log/node/
/var/log/myapp/
$HOME/logs/
查看:
tail -f /var/log/node/app.log
PM2 是最常见的 Node 进程管理器。
pm2 logs
pm2 logs app-name
pm2 logs --lines 200
~/.pm2/logs/
pm2 logs app-name --err
tail -f app.log
grep -i error app.log
grep -i exception app.log
grep "2026-01-21" app.log
grep -c "Error" app.log
sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' app.log
console.log(JSON.stringify({
level: 'info',
time: new Date().toISOString(),
message: 'User login',
userId: 123
}));
然后可用工具分析:
jq . app.log
推荐:
const pino = require('pino');
const logger = pino({ level: 'info' });
logger.info('Server started');
logger.error('DB connection failed');
分析 pino 日志:
pino-pretty < app.log
journalctl -u node-app.service
journalctl -u node-app.service -n 100
journalctl -u node-app.service -f
journalctl --since "2026-01-21 10:00" --until "11:00"
关键词:
heap out of memory
JS stack trace
分析:
grep -i "heap" app.log
grep "500" app.log
grep "timeout" app.log
journalctl -u node-app.service | grep -i fail
Debian 使用 logrotate:
sudo apt install logrotate
示例配置:
/var/log/node/app.log {
daily
rotate 7
compress
missingok
notifempty
}
grep -i error app.log
grep -A 10 -B 10 "Error" app.log
你可以直接贴出:
我可以 直接帮你分析具体错误原因。