当前位置: 首页 > article >正文

【封装小程序log,设定层级】

// utils/logger.js
const log = wx.getRealtimeLogManager ? wx.getRealtimeLogManager() : null; // 手机端点击投诉可以在平台看到日志

const levels = {
  DEBUG: 'debug', // 开发和调试阶段使用
  INFO: 'info', // 记录程序正常运行情况
  WARN: 'warn', // 记录程序运行出现的潜在问题
  ERROR: 'error' // 程序运行过程出现严重错误
};

const prefixes = {
  DEBUG: '[DEBUG]',
  INFO: '[INFO]',
  WARN: '[WARN]',
  ERROR: '[ERROR]'
};

class Logger {
  constructor(level = levels.INFO) {
    this.level = level;
  }

  setLevel(level) {
    this.level = level;
  }

  log(level, ...args) {
    if (this.shouldLog(level)) {
      const timestamp = new Date().toLocaleString();
      const prefix = prefixes[level.toUpperCase()] || '';
      const logMessage = `[${timestamp}] ${prefix} ${args.join(' ')}`;
      console.log(logMessage);
      this.sendToRealtimeLog(level, ...args);
    }
  }

  debug(...args) {
    this.log(levels.DEBUG, ...args);
  }

  info(...args) {
    this.log(levels.INFO, ...args);
  }

  warn(...args) {
    this.log(levels.WARN, ...args);
  }

  error(...args) {
    this.log(levels.ERROR, ...args);
  }

  shouldLog(level) {
    const levelOrder = [levels.DEBUG, levels.INFO, levels.WARN, levels.ERROR];
    return levelOrder.indexOf(level) >= levelOrder.indexOf(this.level);
  }

  sendToRealtimeLog(level, ...args) {
    if (!log) {
      return;
    }
    switch (level) {
      case levels.INFO:
        log.info.apply(log, args);
        break;
      case levels.WARN:
        log.warn.apply(log, args);
        break;
      case levels.ERROR:
        log.error.apply(log, args);
        break;
      default:
        log.debug ? log.debug.apply(log, args) : log.info.apply(log, args);
        break;
    }
  }

  setFilterMsg(msg) {
    if (!log || !log.setFilterMsg) {
      return;
    }
    if (typeof msg !== "string") {
      return;
    }
    log.setFilterMsg(msg);
  }

  addFilterMsg(msg) {
    if (!log || !log.addFilterMsg) {
      return;
    }
    if (typeof msg !== "string") {
      return;
    }
    log.addFilterMsg(msg);
  }
}

const logger = new Logger(levels.DEBUG); // 默认日志级别为 DEBUG

export default logger;
export { levels };

http://www.kler.cn/a/370242.html

相关文章:

  • Java Web开发高级——单元测试与集成测试
  • win32汇编环境,对多行编辑框添加或删除文本
  • AutoGen入门——快速实现多角色、多用户、多智能体对话系统
  • 内存 管理
  • Day 14 卡玛笔记
  • 解决conda create速度过慢的问题
  • opencv - py_ml - py_kmeans
  • Vue.js从入门到精通 — 基础知识
  • 医学影像基础:常见的医学影像学术语和概念
  • 商场应急管理:SpringBoot技术解决方案
  • 后端:Spring-1
  • 智能EDA小白从0开始 —— DAY30 冉谱微RFIC-GPT
  • canvas基础学习(鼠标点位拖拽)
  • 为什么有的说法是STM32有60个外部中断,有的说法是有23个中断
  • vscode中提升效率的插件扩展——待更新
  • 基于Distil-Whisper的实时ASR【自动语音识别】
  • python实战项目47:Selenium采集百度股市通数据
  • 电商 API 接口:提升用户体验的关键路径深度解析
  • AtCoder ABC376A-D题解
  • 雷池社区版compose文件配置讲解--fvm
  • 分布式并发场景的核心问题与解决方案
  • Java | Leetcode Java题解之第516题最长回文子序列
  • Camp4-L0:Linux 前置基础
  • 招商银行实时汇率查询接口-外汇实时汇率API-外汇实时汇率
  • 云联网对等连接--实现内网互通
  • 解决cuda环境使用dgl