温馨提示×

为何debian nodejs无日志

小樊
43
2026-09-07 07:10:27
栏目: 编程语言

在 Debian 上“Node.js 没有日志”通常不是 Node 本身的问题,而是运行方式 + 日志去向导致的。下面按最常见原因逐条说明。


1. 你用 systemd 启动 Node,但没看 journal

Debian 10+ 基本都用 systemd 管理服务。

如果你的 Node 服务是通过:

systemctl start mynode

启动的,那么:

  • console.log() 不会出现在终端
  • 日志在 systemd journal

查看日志:

journalctl -u mynode -f

✅ 这是最常见“看起来没日志”的原因。


2. Node 以 &nohup 后台运行,输出被丢弃

例如:

node app.js &

或:

nohup node app.js &

如果你:

  • 没重定向输出
  • 终端关闭了

日志就没了。

正确方式:

node app.js >> /var/log/node/app.log 2>&1 &

3. 使用 pm2 但没看 pm2 logs

如果你用:

pm2 start app.js

日志不在终端,而在:

pm2 logs

或:

~/.pm2/logs/

4. 代码里根本没有写日志

很多人以为“Node 会自动记日志”,其实:

  • Node 不会自动记录 HTTP 请求
  • Express 也不会默认打印请求

你需要:

console.log('server started')

或用:

app.use((req, res, next) => {
  console.log(req.method, req.url)
  next()
})

5. 日志级别 / 框架吞掉了

例如:

  • winston 设了 level: 'error'
  • morgan 没挂载
  • 生产环境关了 debug

检查:

logger.level = 'debug'

6. Docker / 容器环境

如果你在 Debian 上跑 Docker:

docker logs 容器名

而不是看宿主机日志。


7. 标准输出被重定向到 /dev/null

检查:

ps aux | grep node

看命令里有没有:

> /dev/null 2>&1

快速自查清单 ✅

  1. 是不是 systemd?
    journalctl -u 服务名 -f
    
  2. 是不是 pm2?
    pm2 logs
    
  3. 有没有重定向?
  4. 代码里有没有 console.log
  5. 是否在 Docker 里?

如果你愿意,可以贴一下:

  • 启动方式(systemd / pm2 / 手动)
  • Node 启动命令
  • 是否用 Express / Nest / 原生 http

我可以直接告诉你日志去哪了

0