浏览器花式打印console.log

2024-06-03 13:28

本文主要是介绍浏览器花式打印console.log,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

console是一个用于调试和记录信息的内置对象, 提供了多种方法,可以帮助开发者输出各种信息,进行调试和分析。

美化后的效果:

美化日志工具类

const isArray = function (obj) {return Object.prototype.toString.call(obj) === '[object Array]';
}const Logger = function () {
};Logger.typeColor = function (type) {let color = '';switch (type) {case 'primary':color = '#2d8cf0';break;case 'success':color = '#19be6b';break;case 'info':color = '#909399';break;case 'warn':color = '#ff9900';break;case 'error':color = '#f03f14';break;default:color = '#35495E';break;}return color;
}Logger.print = function (type = 'default', text) {if (typeof text === 'object') {// 如果是对象则调用打印对象方式isArray(text) ? console.table(text) : console.dir(text);return;}console.log(`%c ${text} `,`border: 1px solid ${Logger.typeColor(type)};padding: 2px; border-radius: 4px;color: ${Logger.typeColor(type)};`);
}Logger.pretty = function (type = 'primary', title, text) {if (typeof text === 'object') {console.group('Console Group', title);console.log(`%c ${title}`,`background:${Logger.typeColor(type)};border:1px solid ${Logger.typeColor(type)};padding: 1px; border-radius: 4px; color: #fff;`);isArray(text) ? console.table(text) : console.dir(text);console.groupEnd();return;}console.log(`%c ${title} %c ${text} %c`,`background:${Logger.typeColor(type)};border:1px solid ${Logger.typeColor(type)};padding: 1px; border-radius: 4px 0 0 4px; color: #fff;`,`border:1px solid ${Logger.typeColor(type)};padding: 1px; border-radius: 0 4px 4px 0; color: ${Logger.typeColor(type)};`,'background:transparent');
}Logger.prettyPrimary = function (title, ...text) {text.forEach((t) => this.pretty('primary', title, t));
}Logger.prettySuccess = function (title, ...text) {text.forEach((t) => this.pretty('success', title, t));
}Logger.prettyWarn = function (title, ...text) {text.forEach((t) => this.pretty('warn', title, t));
}Logger.prettyError = function (title, ...text) {text.forEach((t) => this.pretty('error', title, t));
}Logger.prettyInfo = function (title, ...text) {text.forEach((t) => this.pretty('info', title, t));
}/*** 打印图片* @param url 图片地址* @param scale 图片缩放比例*/
Logger.printPic = function (url, scale = 1) {const img = new Image();img.crossOrigin = 'anonymous';img.onload = () => {const c = document.createElement('canvas');const ctx = c.getContext('2d');if (ctx) {c.width = img.width;c.height = img.height;ctx.fillStyle = 'red';ctx.fillRect(0, 0, c.width, c.height);ctx.drawImage(img, 0, 0);const dataUri = c.toDataURL('image/png');console.log(`%c sup?`,`font-size: 1px;padding: ${Math.floor((img.height * scale) / 2)}px ${Math.floor((img.width * scale) / 2)}px;background-image: url(${dataUri});background-repeat: no-repeat;background-size: ${img.width * scale}px ${img.height * scale}px;color: transparent;`);}};img.src = url;
}export default Logger;

Vue2中的使用

main.js

// 引入prettyLog.js
import Logger from "./utils/prettyLog";
// 将 Logger 挂载到 Vue 原型上
Vue.prototype.$logger = Logger;

index.vue

<template><div><div align="center"><div class="typing">欢迎使用木芒果有限公司后台管理系统</div></div></div>
</template><script>export default {name: "Index",data() {return {}},created() {//打印标准日志this.$logger.prettyPrimary("欢迎使用!", "木芒果有限公司后台管理系统")//打印信息日志this.$logger.prettyInfo("欢迎使用!", "木芒果有限公司后台管理系统")//打印成功日志this.$logger.prettySuccess("欢迎使用!", "木芒果有限公司后台管理系统")//打印错误日志this.$logger.prettyError("欢迎使用!", "木芒果有限公司后台管理系统")//打印警告日志this.$logger.prettyWarn("欢迎使用!", "木芒果有限公司后台管理系统")//打印带图片的日志this.$logger.printPic("https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0514%2Fd0ea93ebj00sdgx56001xd200u000gtg00hz00a2.jpg&thumbnail=660x2147483647&quality=80&type=jpg")}
}
</script><style scoped>
</style>

Vue3中的使用

main.js

import Logger from "@/utils/prettyLog";
// 将 Logger 绑定到 window 对象上
window.logger = Logger;

index.vue

<template><div><div align="center"><div class="typing">欢迎使用木芒果有限公司后台管理系统</div></div></div>
</template><script setup>
onMounted(() => {//打印标准日志window.logger.prettyPrimary("欢迎使用!", "木芒果有限公司后台管理系统")//打印信息日志window.logger.prettyInfo("欢迎使用!", "木芒果有限公司后台管理系统")//打印成功日志window.logger.prettySuccess("欢迎使用!", "木芒果有限公司后台管理系统")//打印错误日志window.logger.prettyError("欢迎使用!", "木芒果有限公司后台管理系统")//打印警告日志window.logger.prettyWarn("欢迎使用!", "木芒果有限公司后台管理系统")//打印带图片的日志window.logger.printPic("https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2024%2F0514%2Fd0ea93ebj00sdgx56001xd200u000gtg00hz00a2.jpg&thumbnail=660x2147483647&quality=80&type=jpg")
});
</script>

这篇关于浏览器花式打印console.log的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

如何在Mac上彻底删除Edge账户? 手动卸载Edge浏览器并清理残留文件技巧

《如何在Mac上彻底删除Edge账户?手动卸载Edge浏览器并清理残留文件技巧》Mac上的Edge账户里存了不少网站密码和个人信息,结果同事一不小心打开了,简直尴尬到爆炸,想要卸载edge浏览器并清... 如果你遇到 Microsoft Edge 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

如何关闭Mac的Safari通知? 3招教你关闭Safari浏览器网站通知的技巧

《如何关闭Mac的Safari通知?3招教你关闭Safari浏览器网站通知的技巧》当我们在使用Mac电脑专注做一件事情的时候,总是会被一些消息推送通知所打扰,这时候,我们就希望关闭这些烦人的Mac通... Safari 浏览器的「通知」功能本意是为了方便用户及时获取最新资讯,但很容易被一些网站滥用,导致我们

SpringBoot UserAgentUtils获取用户浏览器的用法

《SpringBootUserAgentUtils获取用户浏览器的用法》UserAgentUtils是于处理用户代理(User-Agent)字符串的工具类,一般用于解析和处理浏览器、操作系统以及设备... 目录介绍效果图依赖封装客户端工具封装IP工具实体类获取设备信息入库介绍UserAgentUtils

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法

《springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法》:本文主要介绍springboot整合阿里云百炼DeepSeek实现sse流式打印,本文给大家介绍的非常详细,对大... 目录1.开通阿里云百炼,获取到key2.新建SpringBoot项目3.工具类4.启动类5.测试类6.测