在 Linux 下过滤 Node.js 日志,常见做法取决于日志写在哪、用的什么日志库、想在终端看还是从文件分析。下面按场景给你一套实用方法。
console.log / console.errornode app.jsnode app.js > app.log 2>&1node app.js 2>&1 | grep -i error
node app.js 2>&1 | grep -v "health"
node app.js 2>&1 | grep -E "error|warn|exception"
node app.js 2>&1 | tee app.log | grep error
grep -i error app.log
grep -i -A 5 -B 5 error app.log
grep "2026-01-21 10:" app.log
grep -c error app.log
const winston = require('winston');
const logger = winston.createLogger({
level: 'info', // 只输出 info 及以上
transports: [new winston.transports.File({ filename: 'app.log' })]
});
运行环境控制:
LOG_LEVEL=error node app.js
const pino = require('pino');
const logger = pino({ level: process.env.LOG_LEVEL || 'info' });
过滤日志文件:
pino-pretty app.log | grep error
pm2 logs | grep error
只看某个服务:
pm2 logs app | grep error
docker logs -f container_id | grep error
按时间:
docker logs --since 30m container_id
如果日志是 JSON:
cat app.log | jq 'select(.level=="error")'
如果你愿意,可以告诉我:
我可以直接帮你写精准过滤命令或日志配置。