C# 控制台彩色深度打印 工具类

文章目录

  • 前言
  • Nuget 环境安装
    • 代码
    • 使用
    • 打印结果
  • 总结

前言

有时候我们想要靠打印获得程序信息,因为Dubeg模式需要一点一点断点进入进出,但是我们觉得断点运行实在是太慢了,还是直接打印后找结果会好一点。

Nuget 环境安装

在这里插入图片描述
想自己写的话可以看我之前的文章

C# 控制台彩色打印

代码

新建一个Utils,里面放一个LogHelper

在这里插入图片描述

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Console = Colorful.Console;
namespace PubSubTest.Utils
{public static class LogHelper{/// <summary>/// 打印等级/// </summary>public static int PrintLevel = 0;/// <summary>/// 堆栈追踪/// </summary>/// <param name="deep">追踪深度,0为打印当前,1为打印上一层</param>/// <returns></returns>private static string TraceMethodInfo(int deep){//Color.Browndeep += 2;string info = "";try{StackFrame st = new System.Diagnostics.StackTrace(deep, true).GetFrame(0);info = $"{st.GetMethod().DeclaringType.FullName} :{st.GetFileLineNumber()}";}catch (Exception e){Console.WriteLine(e.Message);}//Color.Brown;return info;}/// <summary>/// 彩色深度打印/// </summary>/// <param name="msg">信息</param>/// <param name="deep">深度</param>/// <param name="state">等级</param>public static void Log(string msg, int deep = 0, LogLevel state = LogLevel.Debug){if ((int)state >= PrintLevel){ColorPrint($"{state.ToString()}\t" +msg, (int)state);var deepMsg = TraceMethodInfo(deep);Console.WriteLine("\t" + deepMsg, (int)state);}}private static void ColorPrint(string msg, int state){switch (state){case 0:Console.WriteLine(msg);break;case 1:Console.WriteLine(msg, Color.LightGreen);break;case 2:Console.WriteLine(msg, Color.Yellow);break;case 3:Console.WriteLine(msg, Color.Red);break;case 4:Console.WriteLine(msg, Color.LightPink);break;}}}/// <summary>/// 日志等级/// </summary>public enum LogLevel : int{Debug = 0,Info = 1,Warn = 2,Error = 3,Must = 4}
}

Tips:using Console = Colorful.Console;这句话别忘记了

使用

    internal class Program{public static Action action;public static PubSubHelper helper = new PubSubHelper();static void Main(string[] args){Test();//Console.WriteLine(LogLevel.Warn.ToString());Console.ReadLine();}public static void Test(){LogHelper.Log("打印测试",0);LogHelper.Log("打印测试",1);LogHelper.Log("打印测试",1,LogLevel.Debug);LogHelper.Log("打印测试",1,LogLevel.Info);LogHelper.Log("打印测试",1,LogLevel.Warn);LogHelper.Log("打印测试",1,LogLevel.Error);LogHelper.Log("打印测试",1,LogLevel.Must);}}

打印结果

在这里插入图片描述

总结

大家可以根据深度和色彩自己自定义工具输出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/25728.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio API 33 获取当前连接的WIFI名称

常规流程失败流程 常规流程 以下内容在 API 33 成功实现&#xff0c;低版本API还请自行尝试&#xff08;仅推荐 API 29 - 33 用户食用&#xff09; 先&#xff08;至少&#xff09;添加以下权限到你的 AndroidManifest.xml 文件 <uses-permission android:name"andr…

试卷去手写内容在线擦除,使用这个方法轻松达成

在数字时代&#xff0c;越来越多的人开始使用电子设备来完成日常任务。即使在考试时&#xff0c;许多学生也选择使用电子设备来写答案&#xff0c;而不是在试卷上手写。然而&#xff0c;有时候我们需要手写答案&#xff0c;但当我们想要更改或者擦除时&#xff0c;这将是一个麻…

【ES】笔记-模板字符串(template string)是增强版的字符串`${expresions}`

模板字符串 传统的 JavaScript 语言&#xff0c;输出模板通常是这样写的&#xff08;下面使用了 jQuery 的方法&#xff09;。 $(#result).append(There are <b> basket.count </b> items in your basket, <em> basket.onSale </em> are on sal…

TypeScript 类型断言

TypeScript 类型断言 简单来说类型断言就是 使用as关键词 强行指定获取到的结果类型 应用场景 // 类型断言: 强行指定获取到的结果类型// 应用场景// 页面上有一个 id 为 link 的 a 标签// 我们知道它是 a 标签// 但是 TS 不知道 // document.getElementById 的返回值是 HTMLE…

区块链实验室(17) - FISCO BCOS的P2P网络层分析

首先启动FISCO BCOS的示例网络&#xff0c;即4个节点的强连通网络。每个节点与其余3个节点存在网络连接。 打开控制台&#xff0c;可以看到当前有21个区块。 其中1个节点的P2P端口是30301&#xff0c;监测这个节点的端口。 该端口的部分流量见下图所示。白底部分是某1秒钟接收到…

f12 CSS网页调试_css样式被划了黑线怎么办

我的问题是这样的 class加上去了,但是样式不生效,此时可能是样式被其他样式覆盖了, 解决方案就是 给颜色后边添加一个!important

IDEA中怎么使用git下载项目到本地,通过URL克隆项目(giteegithub)

点击 新建>来自版本控制的项目 点击后会弹出这样一个窗口 通过URL拉取项目代码 打开你要下载的项目仓库 克隆>复制 gitee github也是一样的 返回IDEA 将刚刚复制的URL粘贴进去选择合适的位置点击克隆 下载完成

Java方法重写

目录 1.什么是方法重写 2.方法重写的规则 3.重写与重载的区别 1.什么是方法重写 重写&#xff08;override&#xff0c;也称为覆盖&#xff09;&#xff1a;在子类中对父类中允许访问的方法的实现过程进行重新编写&#xff0c;子类中方法的名称、返回值类型、参数列表与父类…

Linux crontab命令:循环执行定时任务(详解)

crontab 命令的基本格式如下&#xff1a; [rootlocalhost ~]# crontab [选项] [file] file 指的是命令文件的名字&#xff0c;表示将 file 作为 crontab 的任务列表文件并载入 crontab&#xff0c;若在命令行中未指定文件名&#xff0c;则此命令将接受标准输入&#xff08;键盘…

微服务基础总结

1.服务注册和发现 服务注册维护一个登记簿&#xff0c;管理系统内所有服务地址&#xff0c;服务启动后会向登记簿交待自己的地址信息。 服务注册形式&#xff1a;客户端注册和第三方注册 客户端注册&#xff08;zookeeper&#xff09; 服务自身要负责注册和注销工作&#xf…

清理c盘的垃圾。

1 清理系统缓存 1.首先使用键盘上[ WindowsR ]打开[运行] 2&#xff0c;在对话框中输入%temp%字符&#xff0c;并点击[确定] 3.选中该弹窗&#xff0c;再用[ctrlA] 进行全选 4.删除 2 清理软件 链接: https://pan.baidu.com/s/1sG70n-aEMGStv4T1YM-cPQ?pwd83rm 提取码: 83r…

部署Tomcat和jpress应用

静态页面&#xff1a;静态页面是指在服务器上提前生成好的HTML文件&#xff0c;每次用户请求时直接返回给用户。静态页面的内容是固定的&#xff0c;不会根据用户的请求或其他条件进行变化。静态页面的优点是加载速度快&#xff0c;对服务器资源要求较低&#xff0c;但缺点是无…

深入理解派生类

深入理解派生类 Created time: August 6, 2023 10:10 AM 运行时多态和编译时多态 多态是面向对象编程中的一个重要概念&#xff0c;它可以让我们以一种更加灵活的方式来处理对象&#xff0c;使得程序更加易读易维护。在C中&#xff0c;多态可以分为两种类型&#xff1a;运行…

从URL取值传给后端

从URL传值给后端 http://127.0.0.1:8080/blog_content.html?id8点击浏览文章详情&#xff0c;跳转至详情页面 从 url 中拿出文章 id&#xff0c;传给后端 首先拿到url然后判断是否有值&#xff0c;从问号后面取值params.split(&) 以 & 作为分割然后遍历字符数组 param…

TFTP 的使用操作指南(轻松入门版)

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…

RabbitMQ 生产者-消息丢失 之 场景分析

生产者-消息丢失 之 场景分析 生产者消息丢失的场景消息无法到达RabbitMQ连接断开信道关闭 RabbitMQ无法将消息入队交换机不存在无匹配队列 消息过期丢失消息丢失场景对比 生产者消息丢失的场景 生产者发送消息的流程如下&#xff1a;首先生产者和RabbitMQ服务器建立连接&…

opencv基础 42- Scharr算子-cv2.Scharr()(边缘检测基础)

Scharr算子是用于计算图像梯度的一种常用算子&#xff0c;特别是在边缘检测任务中。它是Sobel算子的改进版本&#xff0c;旨在提供更加准确和敏感的边缘检测。 在离散的空间上&#xff0c;有很多方法可以用来计算近似导数&#xff0c;在使用 33 的 Sobel 算子时&#xff0c;可能…

简述Mysql索引

一、索引概述 1.1 索引概述 MySQL官方对索引的定义为&#xff1a;索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构。 索引的本质&#xff1a;索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”&#xff0c;满足特定查找算法。 这些数据结…

uniapp小程序console.log在微信开发者工具中不打印问题

最近在开发一款uniapp小程序&#xff0c;发现console.log在微信开发者工具中不打印&#xff0c;但在H5页面就能够有打印输出&#xff0c;于是在网上寻找原因… 主要是由于vue.config.js文件中有设置发布时删除console的配置&#xff0c;如下&#xff1a; 官网参考地址&#x…

静态路由 (华为设备)

默认路由&#xff1a;当路由器 收到目标地址不在路由表中的数据包时&#xff0c;将会 全部 发送 到 默认路由所定义的吓一跳 &#xff0c;作为位置地址 数据包的 最后求助方式&#xff0c;这就是默认路由器的功能&#xff0c;默认路由的使用&#xff0c;可以大大的节省系统资源…