Node.js应用的日志主要分布在系统日志和应用自身日志两类中,需先定位日志文件位置:
systemd-journald记录系统级日志,可通过/var/log/syslog或journalctl查看;若应用以systemd服务运行(如nodeapp.service),还可通过journalctl -u nodeapp.service获取专属日志。/var/log/myapp/combined.log、~/.pm2/logs/)。需确认应用配置文件(如winston.config.js、ecosystem.config.js)中的transports设置。tail -f /var/log/syslog查看系统日志实时输出,通过grep过滤Node.js相关条目(如tail -f /var/log/syslog | grep node)。node app.js查看;若使用日志文件,用tail -f /path/to/app.log实时跟踪。pm2 logs查看所有进程日志,pm2 logs your-app-name查看特定应用日志,pm2 logs --lines 100查看最近100行。grep或awk提取错误信息,如grep "ERROR" /path/to/app.log(提取ERROR级别日志)、awk '/ERROR/ {print}' error.log(打印包含ERROR的行)。error> warn> info> debug)缩小范围。优先查看error级别日志(如logger.error('Database connection failed')),再逐步排查warn或info级别日志。format: winston.format.json()),可使用jq工具解析,如jq '.level="error"' combined.log提取错误日志。EADDRINUSE(地址已使用),用netstat -an | grep :3000(替换为应用端口)检查端口占用,通过kill -9 <PID>终止占用进程,或修改应用端口(如app.listen(3001))。EACCES错误),检查日志目录权限:sudo mkdir -p /var/log/myapp(创建目录)、sudo chown -R nodeuser:nodegroup /var/log/myapp(修改所有者)、sudo chmod -R 755 /var/log/myapp(设置权限),确保Node.js进程用户(如nodeuser)有写入权限。Cannot find module(模块未找到),运行npm install安装缺失依赖;若显示npm ERR(依赖冲突),使用npm ls <package-name>检查版本冲突,或通过package.json调整版本。SyntaxError),用文本编辑器检查报错文件(如app.js第10行),修复语法错误(如缺少括号、引号)。logrotate防止日志文件过大,创建配置文件/etc/logrotate.d/myapp,内容如下:/path/to/your/nodejs-app/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 nodeuser nodegroup
}
该配置每日轮换日志,保留7天压缩文件,空日志不轮换,创建时设置权限。filebeat),并在Kibana中创建仪表盘展示错误趋势。node --inspect-brk app.js # 启动调试模式,暂停在首行
然后在Chrome浏览器打开chrome://inspect,点击“Open dedicated DevTools for Node”连接,设置断点调试代码。通过以上步骤,可系统性地通过Node.js日志排查Debian系统上的应用故障。需根据实际日志内容调整排查方向,优先解决致命错误(如error级别),再优化性能或次要问题。