Debian 系统中 Node.js 日志查看指南
一 常见日志位置与来源
- 应用自定义文件:多数项目会在项目目录的 logs/ 或配置中指定路径,例如 /var/log/nodejs/、/var/log/myapp.log,具体以应用或日志库配置为准。
- 系统日志:由 systemd 托管的应用,日志进入 journald,可通过服务单元名查看;未托管但向系统日志写入的应用,可在 /var/log/syslog 中检索。
- 进程管理器:使用 PM2 时,日志由 PM2 管理,统一通过 PM2 命令查看。
- 框架与中间件:如 Express + morgan 常输出访问日志与错误日志,路径取决于应用配置。
二 快速查看与检索命令
- 实时查看文件日志:tail -f /path/to/app.log
- 查看文件末尾 N 行:tail -n 100 /path/to/app.log
- 全文查看:cat /path/to/app.log
- 关键字过滤:grep -i “error” /path/to/app.log
- 多文件实时跟踪:tail -f /var/log/nodejs/*.log
- 系统日志检索:grep -i “node” /var/log/syslog
- 按时间筛选 systemd 日志:journalctl -u nodeapp.service --since “2025-12-01” --until “2025-12-07”
- 查看服务最近启动日志:journalctl -u nodeapp.service -b
- 内核与驱动线索:dmesg | grep -i node
以上命令覆盖文件、系统日志与内核层面的常用排查路径。
三 按运行方式查看
- 使用 systemd 管理的服务
- 确认服务名:systemctl list-units --type=service | grep node
- 实时查看:journalctl -u your-nodejs-service -f
- 按时间/启动筛选:journalctl -u your-nodejs-service --since today -b
- 使用 PM2 管理的进程
- 实时查看全部:pm2 logs
- 查看指定应用:pm2 logs app_name
- 按时间查看:pm2 logs app_name --since 10m
- 直接前台运行或控制台输出
直接在前台运行时,日志打印到控制台;若重定向到文件,则按“文件日志”方式用 tail/grep 等查看。
四 定位日志路径与配置
- 检查应用配置与代码:查看项目中的日志库配置(如 Winston、Pino、Bunyan、Log4js、morgan)的 filename 或 stream 字段,确认日志文件路径。
- 检查环境变量:echo $LOG_PATH 或 grep -R “LOG_PATH” /path/to/app 查找是否由环境变量指定。
- 检查 systemd 单元文件:systemctl cat your-nodejs.service,查看 StandardOutput/StandardError、ExecStart 及是否启用 journald 日志。
- 检查默认目录与系统日志:ls -l /var/log/nodejs/ 2>/dev/null;grep -i “node” /var/log/syslog 查找相关输出。
五 日志轮转与分析建议
- 日志轮转:使用 logrotate 管理日志大小与保留,示例配置(/etc/logrotate.d/nodeapp):
/var/log/nodeapp.log { daily missingok rotate 7 compress notifempty create 0640 root adm }
- 集中与分析:小规模可用 ELK Stack(Elasticsearch/Logstash/Kibana) 或 Fluentd 收集与可视化;中大型可结合 Prometheus + Grafana 做指标与告警联动。