JS花里胡哨的日志打印

2023-10-23 11:59
文章标签 日志 js 打印 花里胡哨

本文主要是介绍JS花里胡哨的日志打印,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

JS花里胡哨的日志打印

分享一个自己在无聊的时候写的axios请求错误日志打印美化,有什么新奇的想法欢迎各位大佬们评论区补充。

效果图

默认颜色效果
在这里插入图片描述
随机颜色效果
在这里插入图片描述

使用方式
import { reqErrLog  } from '*.js'
import axios from 'axios'const ins = axios.create({baseUrl: process.env.VUE_APP_BASE_URL,timeout: 10 * 1000
})ins.interceptors.response.use(response => {const { data, config } = response;// 处理异常返回码if (data.code === 500) {reqErrLog(config, data);return Promise.reject(data)}return data
})
代码实现
/*** 花里胡哨请求日志打印* @param {Object} config 请求设置* @param {Object} repData 请求返回结果* @param {Array} ext 拓展打印信息* @param {Array} skin 皮肤数组* @param {Boolean} showDefSkin 是否显示默认配色*/
export const reqErrLog = (config, repData, ext = [], skin = [], showDefSkin = true) => {const baseURL = process.env.VUE_APP_BASE_URL// 皮肤样式rbg色值const defaultSkin = [[9, 176, 233],[171, 146, 212],[169, 193, 238],[51, 60, 130],[252, 169, 127],[140, 219, 229],[99, 190, 205],[244, 98, 134]]const logSkin = skin.length ? skin : defaultSkin// 日志样式const logStyle = (color, size) => {return [`color: rgb(${color.join(',')})`,`font-size: ${size}px`,`text-shadow: 1px 1px 3px rgba(${color.join(',')}, .6)`].join(';')}// 随机生成rgb颜色const generateColor = () => {return new Array(3).fill(0).map(() => Math.ceil(Math.random() * 255))}// 打印信息let infoGroup = [{label: '请求接口',size: 12,content: baseURL + config.url}, {label: '请求方法',size: 12,content: config.method.toUpperCase(),}, {label: '请求参数',size: 12,content: JSON.stringify(config.params)}, {label: '请求数据',size: 12,content: JSON.stringify(config.data)}, {label: '请求头部',size: 12,content: JSON.stringify(config.headers)}, {label: '错误代码',size: 12,content: repData?.error_code}, {label: '错误信息',size: 12,content: repData?.msg}, {label: '请求时间',size: 12,content: `${new Date().toLocaleDateString()} ${new Date().toLocaleTimeString()}`}, ...ext]infoGroup = infoGroup.map((item, index) => {item.color = showDefSkin? logSkin[index + 1 > logSkin.length? (index + 1) % logSkin.length: index]: generateColor()return item})console.group(config.url + '请求错误')for (const key in infoGroup) {const { label, color, size, content } = infoGroup[key]console.info(`%c${label}: %s`, logStyle(color, size), content)}console.groupEnd()
}

这篇关于JS花里胡哨的日志打印的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/267690

相关文章

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点:

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

开启mysql的binlog日志步骤详解

《开启mysql的binlog日志步骤详解》:本文主要介绍MySQL5.7版本中二进制日志(bin_log)的配置和使用,文中通过图文及代码介绍的非常详细,需要的朋友可以参考下... 目录1.查看是否开启bin_log2.数据库会把日志放进logs目录中3.查看log日志总结 mysql版本5.71.查看

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

SpringBoot如何使用TraceId日志链路追踪

《SpringBoot如何使用TraceId日志链路追踪》文章介绍了如何使用TraceId进行日志链路追踪,通过在日志中添加TraceId关键字,可以将同一次业务调用链上的日志串起来,本文通过实例代码... 目录项目场景:实现步骤1、pom.XML 依赖2、整合logback,打印日志,logback-sp

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)