You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在生产环境查看Node.js的console.log日志?

解决Node.js生产环境console.log日志无法查看的问题

兄弟,我之前也踩过一模一样的坑!本地跑的好好的功能到生产环境就失效,还看不到日志确实头疼。其实生产环境下Node.js的console.log不会直接在Putty终端输出,得看你是怎么部署后端的,下面分几种常见情况给你说解法:

1. 用PM2管理进程(最常用的部署方式)

如果你的Node应用是用PM2启动的,日志都被PM2统一管理了:

  • 实时查看日志:在Putty里执行pm2 logs <你的应用名称/ID>,要是记不清应用名/ID,直接输pm2 list就能看到所有运行的应用。想只看错误日志加--err,只看普通输出加--out,或者pm2 logs --raw看原始未格式化的内容。
  • 查看历史日志:PM2默认把日志存在~/.pm2/logs/目录下,每个应用对应[应用名]-out.log(正常输出)和[应用名]-err.log(错误输出),用tail -f ~/.pm2/logs/your-app-out.log就能实时追踪,用cat或者less可以翻阅历史内容。

2. 用systemd配置成系统服务

很多Linux服务器会把Node应用配置成systemd服务,这种情况用journalctl查日志:

  • 实时查看服务日志:执行journalctl -u <你的服务名>.service -f,-f参数是实时刷新的意思,能看到最新的日志输出。
  • 过滤错误日志:如果只想看错误信息,加-p err,比如journalctl -u your-service.service -p err -f。
  • 查看近期日志:比如看最近1小时的日志,用journalctl -u your-service.service --since "1 hour ago",还能指定具体时间范围。

3. 直接裸跑应用(不推荐,但临时测试可能用)

要是你直接在Putty里输node app.js启动,一旦关闭Putty进程就会终止,而且日志也不会保存。这种情况可以用nohup让进程后台运行并把日志写入文件:

nohup node app.js > app.log 2>&1 &

这个命令会把所有标准输出(console.log内容)和错误输出(报错信息)都写到当前目录的app.log里,之后用tail -f app.log就能实时查看日志了。

额外排查小技巧

  • 先确认本地和生产环境的Node版本是否一致,两边都执行node -v对比,有些语法或第三方包的兼容性问题会导致生产环境失效。
  • 检查环境变量!生产环境的.env文件配置可能和本地不一样,比如数据库连接字符串、API密钥,甚至代码里可能有if (process.env.NODE_ENV === 'production')这样的判断,导致某些console.log被屏蔽了。
  • 如果还是看不到日志,试试在代码里强制写入日志文件,比如:
const fs = require('fs');
// 在关键错误捕获处添加
try {
  // 你的业务逻辑代码
} catch (err) {
  fs.appendFileSync('./production-error.log', `[${new Date().toISOString()}] 错误详情:${err.stack}\n`);
}

内容的提问来源于stack exchange,提问作者MazMat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:36:19