在 CentOS 上“JS 日志为空”通常不是系统问题,而是日志没产生 / 没写对位置 / 被重定向吞噬了。下面按最常见原因逐一排查。
检查是否真的跑了你以为的脚本:
ps -ef | grep node
确认进程存在,且路径正确。
console.log,但输出被重定向了如果你是这样启动的:
node app.js > /dev/null 2>&1 &
那 所有 JS 日志都被丢掉了。
✅ 正确方式:
node app.js > app.log 2>&1 &
常见错误:
fs.writeFileSync('./logs/app.log', data)
在 CentOS 上:
./ 是当前工作目录✅ 建议用绝对路径:
const path = require('path')
const logPath = path.join(__dirname, 'logs', 'app.log')
如果 JS 是以 nginx / nobody / 普通用户 运行:
ls -l /var/log/yourApp/
没写权限就会静默失败。
✅ 解决:
chown -R youruser:youruser /var/log/yourApp
chmod 755 /var/log/yourApp
如果你是用 systemctl 启动:
[Service]
ExecStart=/usr/bin/node /opt/app/app.js
JS 的 console.log 会进 journald,不会在文件里。
查看日志:
journalctl -u your-service -f
✅ 如需写文件:
StandardOutput=append:/var/log/app/app.log
StandardError=append:/var/log/app/error.log
先看有没有报错:
node app.js
或:
journalctl -u your-service --no-pager | tail -50
例如 winston / pino:
logger.info('xxx') // 但 level 设成 error
✅ 检查:
logger.level = 'debug'
# 1. 进程在不在
ps -ef | grep node
# 2. 日志文件在不在
ls -l /path/to/log
# 3. 文件有没有权限
whoami
# 4. 是否被重定向
cat /proc/<pid>/fd/1
> /dev/null如果你愿意,可以把:
发出来,我可以直接帮你定位是哪一条。