在 JavaScript(前端 / Node.js)里“过滤日志内容”通常有几种常见场景,下面按使用场景给你讲最实用的做法。
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', '出错了'); // 显示
All / Errors / Warnings / Logsuser)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
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);
}
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 |
| 临时排查 | 浏览器关键字过滤 |
| 安全 | 过滤敏感字段 |
如果你能说清楚:
我可以直接给你一套可直接用的代码模板。