首页 > 编程语言 >vue (或者 javascript ) 打印彩色日志

vue (或者 javascript ) 打印彩色日志

时间:2023-03-10 09:56:50浏览次数:45  
标签:vue console log javascript error return 日志 string name

type Any = any

/**
 * 创建 console 所需的 style 样式
 * @param bgColor
 * @param fontColor
 */
const createStyle = function(bgColor: string, fontColor = '#fff'): string {
  return `color:${fontColor};background:${bgColor};padding:.3em .8em ;`
}

const SrcConsole = {
  log: console.log,
  warn: console.warn,
  error: console.error
}

/**
 * 参考 https://www.saninnsalas.com/keep-console-log-line-number-in-an-wrapper-function-that-also-add-an-prefix-text/
 */
export class Log {
  private name = ''
  private NameColor = createStyle('#409eff')

  private createLevel(level: string): string {
    return `%c${this.name}: %c${level}`
  }

  /**
   * 获取日志实例
   * @param name 日志的名称
   * @param color 背景颜色, 默认 #409eff
   * @param fontColor 字体颜色, 默认白色
   */
  public static GetLogger(name: Any, color?: string, fontColor?: string) {
    const l = new Log()
    if (typeof name === 'string') {
      l.name = name
    } else {
      l.name = name.constructor.name
    }
    if (color) {
      l.NameColor = createStyle(color, fontColor)
    }
    return l
  }

  /**
   * 提示 info message
   */
  get info(): (...data: Any[]) => void {
    return SrcConsole.log.bind(console, this.createLevel('info'),
      this.NameColor,
      createStyle('green'))
  }

  /**
   * 错误 error message
   */
  get error(): (...data: Any[]) => void {
    return SrcConsole.error.bind(console, this.createLevel('error'),
      this.NameColor,
      createStyle('red'))
  }

  /**
   * 警告 message
   */
  get warn(): (...data: Any[]) => void {
    return SrcConsole.warn.bind(console, this.createLevel('warn'),
      this.NameColor,
      createStyle('#ff9340'))
  }

  /**
   * console.log, 输出原生的 console.log 信息
   */
  public get log(): (...data: Any[]) => void {
    return console.log.bind(console)
  }
}

// 包装 console 日志
const log = Log.GetLogger('console', '#fecb44', '#000')
console.log = log.info
console.warn = log.warn
console.error = log.error

标签:vue,console,log,javascript,error,return,日志,string,name
From: https://www.cnblogs.com/whm-blog/p/17202362.html

相关文章

  • java中的特殊文件、日志技术、多线程入门
    一,属性文件(.properties)1,特殊文件概述(必会)我们知道IO流是用来读数据,目的是为了获取其中的信息供我们使用,但是普通的txt文件是杂乱无章的,除非我们规定,自己写。虽然可以但......
  • 【django-vue】celery延迟任务、定时任务 django中使用celery 秒杀功能 双写一致性
    目录上节回顾字符编码django-redis今日内容1celery执行异步任务,延迟任务,定时任务延时任务定时任务2django中使用celery2.1秒杀功能2.1.1视图2.1.2任务order_task.p......
  • vue获取公网ip
    <template><div><div>YourPublicIP:{{publicIP}}</div></div></template><script>exportdefault{data(){return{publicIP:''......
  • vue3+vite+element-plus按需加载动态图标icon优化方案
    1、问题:element-plus中icon跟element中的icon完全不同,使用也很多变化,最重要的一点就是按需动态加载了,主要用到unplugin-icons这个库根据按需加载icon的使用方法,是无法满......
  • Mybatis学习日志
    查询user表中所有数据1,创建user表,添加数据  2,创建模块,导入坐标 3,编写MyBatis核心配置文件-->替换链接信息解决编码问题4,编写SQL映射文件-->统一管理sql语句,解......
  • 初识rollup 打包、配置vue脚手架
    rollupjavascript代码打包器,它使用了es6新标准代码模块格式。特点:面向未来,拥抱es新标准,支持标准化模块导入、导出等新语法。treeshaking静态分析导入的代码。......
  • 在教学中常被问到的几个vue3.x与typescript的问题,统一解答
    在教学当中,学生在学习vue3.x时,常常会问到typescript和vue3.x之间的关系,感觉这两个技术总是绑在一起的,下面老赵来统一解答一下: 那学vue3.x,为什么要求也要掌握typescrip......
  • 自定义日志服务
     ///<summary>///日志服务///</summary>publicinterfaceILog{voidWrite(LogTypelogType,stringmessage=""......
  • javascript | 刷新页面的方式
    方式序号方法1history.go()2location.reload()3location=location4location.assign(location.href)5location.replace(location.href)6l......
  • ant-design-vue 视频上传组件封装处理
    /**视频上传组件*/<template><div><a-uploadlistType="picture-card":accept="acceptType":action="uploadVideo":fileList="fil......