温馨提示×

linux js日志为何不输出

小樊
45
2026-09-02 12:30:24
栏目: 编程语言

在 Linux 上 JavaScript(Node.js)日志不输出,常见原因和排查思路如下,你可以逐项对照:


一、最常见原因

1️⃣ 输出被重定向到了文件 / dev/null

node app.js > /dev/null 2>&1

这样 console.log 完全看不到。

✅ 检查:

ps -ef | grep node

看启动命令是否有重定向。


2️⃣ 日志输出到了文件,而不是终端

很多项目用 winston / pino / log4js

logger.add(new transports.File({ filename: 'app.log' }))

✅ 解决:

tail -f app.log

3️⃣ 没有 flush(进程直接退出)

console.log('start')
process.exit(0)

在某些 Linux 环境下,缓冲区未刷新就退出了。

✅ 解决:

process.on('exit', () => {})
// 或不要立即 exit

二、Node.js 特有情况

4️⃣ 使用了 console.error 但只看 stdout

node app.js     # 只看 stdout

而日志在 stderr。

✅ 解决:

node app.js 2>&1 | tee log.txt

5️⃣ 在后台运行(systemd / nohup)

nohup node app.js &

默认不输出到终端。

✅ systemd 查看日志:

journalctl -u your-service -f

三、代码层问题

6️⃣ 日志级别被限制

例如:

logger.level = 'error'
logger.info('xxx') // 不输出

✅ 检查日志库配置。


7️⃣ 代码根本没执行

  • 条件未满足
  • 异常被 catch 吞掉
  • 文件未加载

✅ 在入口加:

console.log('server start')

四、Docker / 容器场景

8️⃣ Docker 没看容器日志

docker logs -f container_id

五、快速自检清单 ✅

# 1. 是否真的在运行
ps -ef | grep node

# 2. 是否有重定向
cat /proc/<pid>/cmdline

# 3. 看 stderr
node app.js 2>&1

# 4. 文件日志
ls -lh *.log
tail -f *.log

如果你愿意,可以把:

  • 启动方式(命令 / systemd / docker)
  • 用的日志库(console / winston / pino)
  • 一小段代码

发出来,我可以直接帮你定位是哪一种原因。

0