在 Ubuntu 服务器上维护 Node.js 应用,日志查看是日常绕不开的关键操作。不同运行方式对应不同查看路径,选对方法能显著提升排查效率。下面梳理几种常见场景,助你快速定位问题。
Ubuntu系统下Node.js日志查看的实用方法
1. 控制台输出实时查看(适用于直接运行的应用)
如果使用 node app.js 直接启动 Node.js 应用,日志默认会输出到终端控制台。想要实时追踪最新输出,用 tail -f 是最简便的方式:

# 假设日志输出到终端,直接查看(需保持终端打开)node app.js# 若已将日志重定向到文件(如app.log),使用tail实时查看tail -f app.log
按 Ctrl+C 即可停止查看,操作十分简单。
2. 日志文件查看(手动写入或库配置)
如果应用将日志写入文件(例如通过 fs 模块、winston、bunyan 等日志库),则可以借助文件操作命令进行管理:
- 查看完整日志内容:
cat app.log - 实时追踪最新写入:
tail -f app.log - 按关键词筛选,例如只看错误信息:
grep "error" app.log(注意大小写敏感)
组合运用这些命令,足以应对大多数排查场景。
3. 通过systemd查看服务日志(推荐用于生产环境)
生产环境中许多 Node.js 应用以 systemd 服务形式管理。提前编写好服务文件后,可通过 journalctl 统一查看系统日志:
- 查看服务运行状态:
systemctl status my-nodejs-service(请将my-nodejs-service替换为实际服务名称) - 查看该服务的全部日志:
journalctl -u my-nodejs-service - 实时跟踪最新日志:
journalctl -u my-nodejs-service -f
典型的服务文件(路径 /etc/systemd/system/my-nodejs-service.service)示例如下:
[Unit]Description=My Node.js ApplicationAfter=network.target[Service]ExecStart=/usr/bin/node /path/to/your/app.jsWorkingDirectory=/path/to/your/appUser=your-usernameRestart=alwaysStandardOutput=syslogStandardError=syslogSyslogIdentifier=my-nodejs-service[Install]WantedBy=multi-user.target
编写完成后,先执行 sudo systemctl daemon-reload 加载配置,再通过 sudo systemctl start my-nodejs-service 启动服务。将日志管理整合到 systemd 中,操作更加便捷高效。
4. 使用进程管理器查看日志(如PM2)
如果应用通过 PM2 启动(常用命令 pm2 start app.js),查看日志将更加直观:
- 查看所有应用的日志:
pm2 logs - 查看指定应用的日志:
pm2 logs your-app-name(替换为 PM2 中的应用名称) - 实时跟踪日志:
pm2 logs -f
PM2 会自动将日志保存到 ~/.pm2/logs/ 目录,默认文件名为 app-name-out.log(标准输出)和 app-name-error.log(错误输出)。使用 PM2 的另一个优势是内置日志轮转功能,可有效避免日志文件撑爆磁盘空间。
注意事项
- 日志文件实际路径取决于应用配置,常见位置包括
logs/app.log、./app.log等,务必根据实际情况确认。 - 生产环境强烈推荐使用
winston、bunyan等专业日志库,它们支持分级(info/error)、文件轮转(防止日志无限增长)以及远程传输等功能。 - 当日志量较大时,可借助
grep、awk进行二次筛选,例如grep "ERROR" app.log | tail -n 50仅查看最近 50 条错误日志,节省排查时间。
