控制台日志打印console的封装,加入美化、行显示与打印开关,支持node.js环境

2023-09-18 18:17:39

控制台日志打印console的封装,加入美化、行显示与打印开关,支持node.js环境

为什么要写这个?

封装这个控制台日志打印工具,主要是在项目中自己做的SDK需要提供给其他开发人员使用,加入了日志美化和打印打开,方便了开发人员查找SDK中的日志(提高了逼格),也加深了自己对日志关键性的理解。
首先讲下封装时遇到的一些问题点:

  1. 日志开关
  2. 日志查找便捷性
  3. 日志打印位置需要保留
  4. web环境外使用(目前支持node环境)
  5. 支持链式调用log.setPadStartText('log', 'hello world').info(1234, '4', [3, 5])

对于以上问题点,我是这么解决的:

  • 我是用ts写的,我在工具实际调用的方法内进行清除与重置print来解决日志开关的问题;
  • 日志查找的便携性,我加入了特殊的日志颜色来区分,也就是美化了一下日志输出;
  • 日志打印位置保留,采用了如:console.info.bind(this, ...this.infoPadStartText)这样,即保留了日志位置,又可以像平常使用console一样进行逗号( ,)分隔传参;
  • 为了区分是否是node.js环境,进行了typeof process === 'object'判断;
  • closeLog()openLog()setPadStartText()函数支持链式调用,就是在函数结尾加入return this,返回工具对象

希望这次分享给大家带来方便和灵感,谢谢。

介绍

这是“console”对象的进一步美化和封装,包括console.log、console.info、console.warn、console.error。
可以加入自定义的console打印前缀、对内容进行美化(web端规则参考 https://developer.mozilla.org/en-US/docs/Web/API/Console ,node环境参考 https://zh.wikipedia.org/wiki/ANSI%E8%BD%AC%E4%B9%89%E5%BA%8F%E5%88%97),可随时关闭console打印,支持node环境

github地址:
https://github.com/zancheng/beautify-console-log

gitee地址:
https://gitee.com/cheng-zan/beautify-console-log

效果如下

node日志美化
web端日志美化

安装教程

npm i beautify-console-log --save

yarn add beautify-console-log

使用说明

  1. 简单使用
import BeautifyConsole from "beautify-console-log";
const log = BeautifyConsole.getInstance();
// 使用方式与正常的console.info()一致
log.info(1234, '4', [3, 5]);

const log = new BeautifyConsole();
// 使用方式与正常的console.info()一致
log.info(1234, '4', [3, 5]);

  1. 支持的console类型
const log = BeautifyConsole.getInstance();
log.info(1234, '4', [3, 5]);
log.log(1234, '4', [3, 5]);
log.warn(1234, '4', [3, 5]);
log.error(1234, '4', [3, 5]);
  1. 加入自定义console日志头
const log = BeautifyConsole.getInstance();
log.setPadStartText('log', 'hello world')
// or
log.setPadStartText('log', 'hello world').info(1234, '4', [3, 5]);
  1. 关闭日志,传入参数就关闭对应的console日志类型,不传就关闭所有的类型,支持链式调用
const log = BeautifyConsole.getInstance();
log.close('info');
log.close('log');
log.close('warn');
log.close('error');
log.close();
log.close().open('error');

// or
log.open('error').open('log').open('warn').open('info');

// or
log.close('error').info('closed error');
log.close('error').error('closed error');

// or
log.close('error').open('info');
log.close('error').open('info').info('info...');
  1. 打开日志,传入参数就打开对应的console日志类型,不传就打开所有的类型,支持链式调用
const log = BeautifyConsole.getInstance();
log.open('info');
log.open('log');
log.open('warn');
log.open('error');
log.open();
log.open().close('info');

//or
log.open('error').open('log').open('warn').open('info');

// or
log.open().info('closed error');
log.open('error').error('closed error');

// or
log.close('error').open('info');
log.close('error').open('info').info('info...');
更多推荐

使用电力系统稳定器 (PSS) 和静态 VAR 补偿器 (SVC) 提高瞬态稳定性(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️座右铭:行百里者,半于九十。📋📋📋本文目录如下:🎁🎁🎁目录💥1概述📚2运行结果🎉3参考文献🌈4Simulink仿真实现💥1概述电力系统稳定器(PSS)和静态VAR补偿器(S

tomcat敏感数据加密实现方案

1背景tomcat部署的SSM老项目,在tomcat的context.xml下配置了数据源信息,且部分敏感信息都是明文,这是一项严重的不安全因素。故需要将数据库密码这种敏感信息进行加密。2实现方案2.1继承重写工厂方法这种方法需要在原应用工程中添加扩展工厂类,用于处理tomcat配置文件中敏感信息。优点是不被tomca

VR全景拍摄:打破传统拍摄角度限制,营造全新体验

VR全景拍摄不仅仅是拍摄环境,更多的是展示意境,我们的传统文化就是讲究意境,仅仅是看一张清晰无比的图片,自然显得没有趣味,但是这种真实的视觉体验,明明不在现场却能直观体验现场场景,这种意境可以让人们更加深入地了解事物的本质。随着VR技术的普及,越来越多的人开始使用VR全景拍摄来展示自己的店铺,VR全景拍摄具备很好的视觉

Electron自动化测试技术选型调研

Electron简介Electron是一个开源的框架,用于构建跨平台的桌面应用程序。它由GitHub开发并于2013年首次发布。Electron允许开发人员使用Web技术(如HTML、CSS和JavaScript)来构建桌面应用程序,同时可以在Windows、macOS和Linux等操作系统上运行。以下是一些关键特点和

【广州华锐互动】煤矿坍塌VR事故警示教育突破了哪些限制?

煤矿坍塌事故是煤矿行业的一种常见事故,对于矿工的生命安全和生产设备都存在着严重威胁。传统的安全培训方式往往难以真实地呈现事故场景,难以达到理想的安全教育效果。而虚拟现实(VR)技术的出现,为煤矿安全教育带来了新的突破。本文将深入探讨,广州华锐互动所开发的煤矿坍塌VR事故警示教育系统所突破的限制,展现其在安全教育中的重要

STM32 USB CDC 虚拟串口

//用虚拟串口(USBCDCVCP)感觉有些不稳定,尤其是下位机掉电后再上电,上位机虚拟的那个串口根本不能用,还有就是//必须等虚拟串口出来后且知道串口号上位机才可以执行打开操作//上面是实际情况,但并不是STM32的USB不行,而是PC端的驱动程序有问题。或者说是PC机的驱动程序机制造成的。//如果是PC机正常的RS

K8s(Kubernetes)学习(五)——Service:ClusterIP、NodePort、LoadBalancer、 ExternalName

第五章Service什么是Service为什么需要ServiceService特性Service与Pod关联Servicetype类型如何使用Service多端口配置1什么是Service1.1定义官网地址:https://kubernetes.io/zh-cn/docs/concepts/services-netwo

2023/09/15 qt day2

完善登录框点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容"账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。如果账号和密码匹配,则弹出信息对话框,给出提示信

【总结】javascript中的同步与异步

概念同步模式简单的理解就是后一个任务等待前一个任务的结束才能执行,程序的执行顺序与任务的排列顺序是一致的、同步的;同步任务进入主线程异步模式异步的每一个任务有一个或多个回调函数,前一个任务执行结束后,并不会执行后一个任务,而是执行它的回调函数。而后一个任务不会等待前一个任务结束才执行,所以程序的执行顺序与任务的排列顺序

【Java 基础篇】Java线程异常处理详解

在多线程编程中,异常处理是一个至关重要的方面,它决定了你的多线程应用程序的稳定性和可靠性。在本篇博客中,我们将深入探讨Java中的线程异常处理,包括线程抛出的异常类型、如何捕获和处理异常以及最佳实践。异常类型在多线程应用中,线程可能会抛出不同类型的异常。了解这些异常的类型对于有效的异常处理至关重要。以下是一些常见的线程

C/C++简单计算器 2019年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录C/C++简单计算器一、题目要求1、编程实现2、输入输出二、解题思路1、案例分析三、程序代码四、程序说明五、运行结果六、考点分析C/C++简单计算器2019年12月C/C++编程等级考试一级编程题一、题目要求1、编程实现一个最简单的计算器,支持+,-,,/四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超

热文推荐