在 Ubuntu 上分析 Node.js 日志,通常可以从日志来源、查看方式、常见问题分析、工具使用几个方面入手。下面给你一个实用指南。
Node.js 默认日志来自:
console.log()
console.error()
console.warn()
运行方式:
node app.js
# 或
npm start
如果用 systemd 管理 Node 服务:
journalctl -u your-node-service.service -f
查看历史:
journalctl -u your-node-service.service --since "2024-01-01"
如果用 PM2:
pm2 logs
pm2 logs app-name
pm2 logs --lines 200
日志文件位置:
~/.pm2/logs/
常见于:
/var/log/node/
./logs/
配合 winston、pino、morgan 等日志库。
tail -f app.log
grep -i error app.log
grep "2024-01-01 10:" app.log
grep -c "Error" app.log
tail -n 100 app.log
日志特征:
heap out of memory分析:
node --max-old-space-size=1024 app.js
结合:
pm2 monit
日志:
TypeError: Cannot read properties of undefined
解决:
process.on('uncaughtException', e => {
console.error(e);
});
结合:
tail -f /var/log/nginx/access.log
常见:
ECONNREFUSED
ETIMEDOUT
检查:
systemctl status mysql
netstat -tulnp | grep 3306
lessgrepawkconst winston = require('winston');
const logger = winston.createLogger({
level: 'info',
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
如果你愿意,可以告诉我:
我可以直接给你针对性的分析命令或脚本。