Ubuntu下Node.js日志文件位置与定位方法
常见位置
- PM2 管理:日志默认在用户主目录的 ~/.pm2/logs/,常见文件名为 <app_name>-out.log(标准输出)与 <app_name>-err.log(错误输出)。
- 系统日志目录:很多应用会把日志写到 /var/log/;若以系统服务运行,可用 journalctl -u <service_name> 查看。
- 项目或安装目录:应用配置或代码中常把日志写到项目里的 logs/ 目录,或直接放在 项目根目录(如 app.log、error.log)。
- 自定义路径:通过环境变量(如 LOG_PATH)或日志库(如 Winston、Log4js)指定,路径完全取决于你的配置。
快速定位步骤
- 若使用 PM2:运行 pm2 logs 或 pm2 logs <app_name_or_id> 实时查看;日志文件在 ~/.pm2/logs/。
- 查看项目配置与代码:检查 config.json、settings.js 或启动脚本中是否设置了日志文件路径;留意是否使用 process.env.LOG_PATH 等变量。
- 全盘快速查找日志文件:在项目目录或可能的日志目录执行
- 查找包含 “.log” 的文件:find /your/project -type f -name “*.log”
- 查找最近修改的日志:find /var/log /your/project -type f -name “*.log” -mtime -7
- 若为系统服务:用 sudo journalctl -u <service_name> -f 实时查看服务日志。
常用查看命令
- 实时查看:tail -f /path/to/app.log
- 查看最近 N 行:tail -n 1000 /path/to/app.log
- 分页查看:less /path/to/app.log
- 查看系统日志:sudo tail -f /var/log/syslog
- PM2 日志:pm2 logs、pm2 logs --lines 1000 --follow
日志轮转与维护
- 使用 logrotate(系统级):
- 使用 Winston + winston-daily-rotate-file(应用内):可按日期切分、压缩并限制保留天数,适合容器化或无 systemd 的场景。