journalctl查看(适用于systemd管理的服务)若Node.js应用以systemd服务形式运行(如通过systemctl start your-nodejs-service启动),可使用journalctl命令查看关联日志。
systemctl list-units --type=service | grep node,找到目标服务(如my-nodejs-app.service);journalctl -u your-nodejs-service-name(替换为实际服务名);journalctl -u your-nodejs-service-name -f(持续输出最新日志);journalctl -u your-nodejs-service-name -t error(仅显示错误级别日志)。若应用代码中配置了日志输出路径(如使用winston、morgan等日志库,或在启动时重定向输出),可直接查看指定文件。
logs文件夹(如logs/app.log、logs/error.log),或代码中明确指定的路径(如node app.js > logs/app.log 2>&1 &中的logs/app.log)。cat /path/to/logfile(如cat logs/error.log);less /path/to/logfile(按q退出);tail -f /path/to/logfile(动态显示新增日志);grep 'error' /path/to/logfile(提取包含“error”的行)。PM2是Node.js常用的进程管理工具,可自动捕获并管理应用日志(包括错误日志)。
pm2 list(找到目标应用的id或name);pm2 logs app_name_or_id(默认显示out.log和error.log);pm2 logs app_name_or_id --err(过滤出错误日志)。ecosystem.config.js配置文件修改日志输出位置,例如:module.exports = {
apps: [{
name: 'my_node_app',
script: 'app.js',
error_file: '/var/log/nodejs/my_app-error.log', // 错误日志路径
out_file: '/var/log/nodejs/my_app-out.log', // 输出日志路径
log_level: 'error' // 仅记录错误级别日志
}]
};
配置后运行pm2 start ecosystem.config.js即可生效。PM2的日志管理功能强大,支持日志轮转、远程传输等,适合生产环境。若无法确定日志位置,可通过端口或进程信息间接获取:
netstat -tuln | grep node(如0.0.0.0:3000);lsof -i :3000(输出中的PID列);ps -ef | grep PID(确认进程的启动命令,是否包含日志重定向路径)。以上方法覆盖了CentOS环境下查看Node.js错误日志的主要场景,可根据应用部署方式(systemd/PM2/直接运行)和日志配置选择合适的方式。