在 Debian 上导出 Node.js 日志,方式取决于你的 Node.js 是怎么运行的(直接运行、systemd、PM2、Docker 等)。下面按常见情况说明。
如果你是这样启动的:
node app.js
node app.js > app.log 2>&1
>:标准输出2>&1:错误输出也写入node app.js 2>&1 | tee app.log
如果是通过 systemd 服务运行(如 /etc/systemd/system/nodeapp.service):
journalctl -u nodeapp.service
journalctl -u nodeapp.service > nodeapp.log
journalctl -u nodeapp.service -n 100 > nodeapp.log
journalctl -u nodeapp.service --since "2024-01-01" --until "2024-01-02" > nodeapp.log
pm2 logs
pm2 logs appname > app.log
PM2 日志默认在:
~/.pm2/logs/
例如:
cp ~/.pm2/logs/appname-out.log ./app-out.log
cp ~/.pm2/logs/appname-error.log ./app-error.log
docker logs 容器名
docker logs 容器名 > node.log 2>&1
如果你在代码里用了 winston、pino 等:
const fs = require('fs');
fs.appendFileSync('app.log', 'some log\n');
日志文件通常在项目目录或配置路径中,直接拷贝即可。
systemd + journalctl 或 PM2grep / sed / awk 过滤journalctl -u nodeapp | grep ERROR > error.log
如果你愿意,可以告诉我:
我可以直接给你一条准确命令。