在 Debian 上过滤 Node.js 日志,取决于日志写在哪里(stdout、文件、systemd、PM2、Docker 等)。下面按常见场景给你一套实用做法。
grep 过滤node app.js | grep "ERROR"
只显示包含 ERROR 的日志。
忽略大小写:
node app.js | grep -i error
过滤多个关键词:
node app.js | grep -E "ERROR|WARN"
排除某些日志:
node app.js | grep -v "healthcheck"
node app.js > app.log 2>&1
tail -f app.log | grep "ERROR"
grep "2026-01-21 10:" app.log
grep -E "error|warn" app.log
如果 Node.js 是通过 systemd 管理的:
journalctl -u your-node-service.service
journalctl -u your-node-service.service -f
journalctl -u your-node-service.service | grep ERROR
journalctl -u your-node-service.service --since today
pm2 logs
pm2 logs --err
pm2 logs | grep "ERROR"
pm2 logs app-name
docker logs -f container_id
docker logs container_id 2>&1 | grep ERROR
例如 winston / pino
const winston = require('winston');
const logger = winston.createLogger({
level: 'info',
format: winston.format.json(),
transports: [
new winston.transports.File({ filename: 'error.log', level: 'error' }),
new winston.transports.File({ filename: 'combined.log' })
]
});
这样你可以:
grep ERROR error.log
| 场景 | 推荐命令 |
|---|---|
| 实时查看 | tail -f app.log |
| 过滤错误 | grep ERROR app.log |
| systemd | journalctl -u xxx -f |
| PM2 | pm2 logs --err |
| Docker | docker logs -f xxx |
如果你愿意,可以告诉我:
我可以帮你定制一条最精准的过滤命令。