zoukankan      html  css  js  c++  java
  • 前端打印日志到localStroge并导出

    interface LogEntry {
      data: any
      time: Date
    }
    export class PersistantLog {
      //最大条数
      maxEntries = 3000;
      isEnabled = false;
      name = "default_log";
      localStorage = window.localStorage;
      entries: LogEntry[] = JSON.parse(this.localStorage.getItem(this.name));
      constructor() {
        this.isEnabled = true;
      }
     
      public log(info: any) {
        if (!this.isEnabled) return;
        this.entries.push({
          time: new Date(),
          data: info
        })
        this.save();
      }
     
      public enable() {
        this.isEnabled = true;
      }
     
      private save() {
        this.entries = this.entries.slice(-this.maxEntries)
        let data = JSON.stringify(this.entries)
        this.localStorage.setItem(this.name, data)
      }
     
      public clear() {
        this.localStorage.removeItem(this.name);
      }
      
      private getEntries() {
        return this.entries
      }
     
      public exportLog(exportFileName: string) {
        let resultStr = this.localStorage.getItem(this.name)
        //将文本或者JS字符串信息借助Blob转换成二进制,然后,
        //作为<a>元素的href属性,配合download属性,实现下载
        if ("download" in document.createElement("a")) {
          let eleLink = document.createElement("a")
          eleLink.download = exportFileName + ".json"
          eleLink.style.display = "none"
          let blob = new Blob([resultStr])
          eleLink.href = URL.createObjectURL(blob)

          //兼容firefox,元素添加到页面才能触发点击
          document.body.appendChild(eleLink)
          eleLink.click()
          document.body.removeChild(eleLink)
        }
      }
    }
  • 相关阅读:
    【LeetCode 15】三数之和
    【LeetCode 14】最长公共前缀
    【LeetCode 13】罗马数字转整数
    【LeetCode 12】整数转罗马数字
    【LeetCode 11】盛最多水的容器
    【LeetCode 10】正则表达式匹配
    【LeetCode 9】回文数
    【LeetCode 8】字符串转换整数 (atoi)
    【LeetCode 7】整数反转
    【LeetCode 6】Z 字形变换
  • 原文地址:https://www.cnblogs.com/brainworld/p/8662288.html
Copyright © 2011-2022 走看看