插件窝 干货文章 如何设置JS日志级别

如何设置JS日志级别

级别 日志 debug logger 193    来源:    2025-05-06

设置JavaScript日志级别的方法

在JavaScript中,可以通过多种方式来设置和控制日志级别。以下是几种常见的方法:

1. 使用console的不同方法

JavaScript内置的console对象提供了不同级别的日志方法:

// 不同级别的日志
console.error('错误信息 - 最高级别'); // 错误级别
console.warn('警告信息');             // 警告级别
console.info('信息性消息');           // 信息级别
console.log('一般日志');              // 日志级别
console.debug('调试信息');            // 调试级别(最低)

2. 自定义日志级别控制

可以创建一个日志工具来控制输出级别:

const LogLevel = {
  ERROR: 0,
  WARN: 1,
  INFO: 2,
  DEBUG: 3
};

let currentLogLevel = LogLevel.INFO; // 默认级别

function log(level, message) {
  if (level <= currentLogLevel) {
    const levelName = Object.keys(LogLevel).find(key => LogLevel[key] === level);
    console.log(`[${levelName}] ${message}`);
  }
}

// 设置日志级别
function setLogLevel(level) {
  currentLogLevel = level;
}

// 使用示例
setLogLevel(LogLevel.DEBUG);
log(LogLevel.INFO, '这是一个信息消息');
log(LogLevel.DEBUG, '调试细节');

3. 使用第三方日志库

有许多优秀的第三方日志库可以提供更强大的功能:

winston (Node.js)

const winston = require('winston');

const logger = winston.createLogger({
  level: 'info', // 设置默认级别
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'combined.log' })
  ]
});

// 使用
logger.error('错误信息');
logger.warn('警告信息');
logger.info('信息消息');
logger.debug('调试信息');

log4js (Node.js和浏览器)

const log4js = require('log4js');

log4js.configure({
  appenders: { out: { type: 'stdout' } },
  categories: { default: { appenders: ['out'], level: 'debug' } }
});

const logger = log4js.getLogger();
logger.level = 'debug'; // 设置级别

logger.trace('Entering cheese testing');
logger.debug('Got cheese.');
logger.info('Cheese is Comté.');
logger.warn('Cheese is quite smelly.');
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was breeding ground for listeria.');

loglevel (浏览器)

import log from 'loglevel';

// 设置级别
log.setLevel('debug');

// 使用
log.trace('最详细的日志');
log.debug('调试信息');
log.info('信息消息');
log.warn('警告');
log.error('错误');

4. 浏览器开发者工具中的日志级别控制

大多数现代浏览器的开发者工具允许你过滤控制台输出,按级别显示日志:

  1. 打开开发者工具 (F12 或 Ctrl+Shift+I)
  2. 切换到Console选项卡
  3. 使用日志级别过滤器(通常在下拉菜单中)

5. Node.js环境变量控制

在Node.js中,可以通过环境变量控制日志级别:

# 启动时设置日志级别
DEBUG=* node app.js       # 所有调试信息
DEBUG=app:* node app.js   # 特定命名空间的调试信息

然后在代码中使用debug模块:

const debug = require('debug')('app:server');

// 只有当DEBUG环境变量包含'app:server'时才会输出
debug('服务器启动中...');

最佳实践建议

  1. 在生产环境中设置较高的日志级别(如WARN或ERROR)
  2. 在开发环境使用DEBUG或INFO级别
  3. 考虑使用结构化日志(JSON格式)以便后续分析
  4. 敏感信息不要记录在日志中
  5. 对于大型应用,考虑按模块/功能设置不同的日志级别

希望这些方法能帮助你有效地管理和控制JavaScript应用的日志级别。