在Ubuntu系统中,查看Node.js日志错误需结合系统日志、应用自身日志及进程管理工具,以下是具体方法:
Ubuntu的系统日志会记录Node.js应用的运行状态(包括错误),主要存储在/var/log目录下:
cat命令查看syslog(包含大部分系统及应用日志),或error.log(专门记录错误信息):cat /var/log/syslog | grep "node" # 筛选Node.js相关日志
cat /var/log/error.log | grep "node" # 筛选错误日志
kern.log:cat /var/log/kern.log | grep "node"
systemd服务运行(如通过node app.js --name my-node-app指定服务名),可通过journalctl查看关联日志:journalctl -u my-node-app -t # -u指定服务名,-t显示日志标签
若应用启动时重定向了输出(如将日志写入文件),可直接查看指定路径的日志文件:
node app.js > logs/app.log 2>&1 &(将标准输出和错误输出重定向到logs/app.log),可使用以下命令查看:cat logs/app.log # 查看全部日志
less logs/app.log # 分页查看(按q退出)
tail -f logs/app.log # 实时查看最新日志(Ctrl+C退出)
grep筛选error关键字:cat logs/app.log | grep "error"
若通过pm2等进程管理器启动应用,可直接使用工具命令查看日志:
pm2管理(如pm2 start app.js),可使用以下命令:pm2 logs # 查看所有应用的实时日志
pm2 logs my-app # 查看指定应用(如"my-app")的日志
Error、TypeError)、错误消息(如listen EADDRINUSE)及堆栈跟踪(指向错误代码位置)。listen EADDRINUSE :::3000,解决方法:sudo lsof -i :3000 # 查找占用端口的进程
sudo kill -9 <PID> # 终止进程
Cannot find module 'xxx',解决方法:npm install xxx # 安装缺失的依赖
SyntaxError: Unexpected token,解决方法:检查代码语法(如缺少括号、引号)。winston、bunyan等日志库配置日志分级(如error、warn)和日志轮转(如winston-daily-rotate-file),避免日志文件过大。