温馨提示×

怎样过滤js日志内容

小樊
42
2026-09-05 16:04:14
栏目: 编程语言

在 JavaScript(前端 / Node.js)里“过滤日志内容”通常有几种常见场景,下面按使用场景给你讲最实用的做法。


一、前端:只显示指定级别的日志(console 过滤)

1. 手动控制日志级别

const LOG_LEVEL = 'warn'; // 'debug' | 'info' | 'warn' | 'error'

function log(level, ...args) {
  const levels = { debug: 0, info: 1, warn: 2, error: 3 };
  if (levels[level] >= levels[LOG_LEVEL]) {
    console[level](...args);
  }
}

log('debug', '调试信息'); // 不显示
log('error', '出错了');   // 显示

2. 浏览器控制台过滤

  • 打开 DevTools → Console
  • 上方有 All / Errors / Warnings / Logs
  • 可直接输入关键字过滤(如 user

二、Node.js:过滤日志内容

1. 使用环境变量控制

const level = process.env.LOG_LEVEL || 'info';

function logger(msg, type = 'info') {
  if (type === 'debug' && level !== 'debug') return;
  console[type](msg);
}

运行:

LOG_LEVEL=debug node app.js

2. 使用日志库(推荐)

winston

const winston = require('winston');

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

logger.info('普通日志');
logger.debug('不会显示');

三、按“关键字 / 字段”过滤日志内容

前端示例:只显示某模块日志

function log(module, msg) {
  if (module !== 'auth') return;
  console.log(msg);
}

Node.js:正则过滤

const LOG_FILTER = /error|timeout/;

function log(msg) {
  if (!LOG_FILTER.test(msg)) return;
  console.log(msg);
}

四、生产环境屏蔽敏感信息(重要)

function safeLog(obj) {
  const { password, token, ...rest } = obj;
  console.log(rest);
}

五、常见推荐方案总结

场景 推荐方式
前端调试 console + 手动级别
Node 服务 winston / pino
临时排查 浏览器关键字过滤
安全 过滤敏感字段

如果你能说清楚:

  • 前端还是 Node
  • 想按级别 / 关键字 / 模块过滤
  • 是否用框架(Vue / React / Express)

我可以直接给你一套可直接用的代码模板

0