温馨提示×

怎样过滤debian nodejs日志

小樊
36
2026-09-04 02:50:21
栏目: 编程语言

在 Debian 上“过滤 Node.js 日志”通常分三种场景:命令行实时过滤按文件/服务过滤用工具长期管理日志。下面按常见用法说明。


一、命令行实时过滤(最常用)

1. 用 grep 过滤

如果你是前台运行 Node.js:

node app.js | grep ERROR

如果日志写到了文件:

tail -f /var/log/node/app.log | grep ERROR

多条件过滤:

grep -E "ERROR|WARN" app.log

忽略大小写:

grep -i error app.log

2. 按时间过滤

只看最近 100 行:

tail -n 100 app.log | grep ERROR

二、Systemd 服务方式(推荐生产环境)

如果你用 systemd 管理 Node.js(如 /etc/systemd/system/node-app.service):

查看实时日志

journalctl -u node-app -f

过滤 ERROR

journalctl -u node-app | grep ERROR

按时间过滤

journalctl -u node-app --since "2024-01-01 00:00:00"
journalctl -u node-app --since today

只显示错误级别

journalctl -u node-app -p err

三、日志文件管理(长期方案)

1. 使用 winston / pino(Node.js 内部过滤)

在代码里控制日志级别:

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info',
  transports: [
    new winston.transports.File({ filename: 'app.log' })
  ]
});

只记录 error 及以上:

level: 'error'

2. 使用 logrotate(Debian 自带)

防止日志过大:

sudo nano /etc/logrotate.d/node-app

示例:

/var/log/node/*.log {
  daily
  rotate 7
  compress
  missingok
  notifempty
}

四、进阶:集中式日志(可选)

  • PM2 + logs
pm2 logs
pm2 logs --err
  • ELK / Loki / Grafana 适合多服务、多服务器环境。

总结建议

场景 推荐方式
本地调试 `tail -f
生产服务 systemd + journalctl
日志量大 logrotate + winston/pino

如果你能说明:

  • Node.js 怎么运行的(直接命令 / PM2 / systemd)
  • 日志在哪里(终端 / 文件 / docker)

我可以给你更精确的过滤命令。

0