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

news2025/1/8 21:11:18

文章目录

  • 前言
  • 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.Brown
            deep += 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.coloradmin.cn/o/836211.html

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

相关文章

unity tolua热更新框架教程(1)

git GitHub - topameng/tolua: The fastest unity lua binding solution 拉取到本地 使用unity打开&#xff0c;此处使用环境 打开前几个弹窗(管线和api升级)都点确定 修改项目设置 切换到安卓平台尝试打包编译 设置包名 查看报错 打开 屏蔽接口导出 重新生成 编译通过 …

FineReport常用功能

不分页显示数据 参见&#xff1a;https://help.fanruan.com/finereport/doc-view-328.html?source4 列数多时&#xff0c;所有列不能在一页显示&#xff0c;可在URL后增加如下参数&#xff0c;添加模版时&#xff0c;可以作为模版参数进行设置&#xff1a; 分页预览模式&am…

orangepi 4lts ubuntu安装RabbitMQ

4lts的emmc 系统安装选文件系统格式 ext4 需先安装erlang&#xff1a; sudo apt install erlang 安装RabbitMQ: sudo apt install rabbitmq-server - 添加用户以便远程访问&#xff1a; - 账号密码都是admin: sudo rabbitmqctl add_user admin admin -sudo rabbitmqct…

C 语言高级2-多维数组,结构体,递归操作

1. 多维数组 1.1 一维数组 元素类型角度&#xff1a;数组是相同类型的变量的有序集合内存角度&#xff1a;连续的一大片内存空间 在讨论多维数组之前&#xff0c;我们还需要学习很多关于一维数组的知识。首先让我们学习一个概念。 1.1.1 数组名 考虑下面这些声明&#xff1…

钉钉微应用

钉钉微应用 在做钉钉微应用开发的时候&#xff0c;遇到了一些相关性的问题&#xff0c;特此记录下&#xff0c;有遇到其他问题的&#xff0c;欢迎一起讨论 调试工具 当我们基于钉钉开发微应用时&#xff0c;难免会遇到调用钉钉api后的调试&#xff0c;这个时候可以安装eruda…

笔记本WIFI连接无网络【实测有效解决方案,不用重启电脑】

笔记本Wifi连接无网络实测有效解决方案 问题描述&#xff1a; 笔记本买来一段时间后&#xff0c;WIFI网络连接开机一段时间还正常连接&#xff0c;但是过一段时间显示网络连接不上解决方案&#xff1a; 1.编写网络重启bat脚本&#xff0c;将以下内容写到文本文件&#xff0c;把…

使用 FastGPT 构建高质量 AI 知识库

作者&#xff1a;余金隆。FastGPT 项目作者&#xff0c;Sealos 项目前端负责人&#xff0c;前 Shopee 前端开发工程师 FastGPT 项目地址&#xff1a;https://github.com/labring/FastGPT/ 引言 自从去年 12 月 ChatGPT 发布以来&#xff0c;带动了一轮新的交互应用革命。尤其在…

【分布式系统】聊聊系统监控

对于分布式系统来说&#xff0c;出现故障的是常有的事情&#xff0c;如何在短时间内找到故障的原因&#xff0c;排除故障是非常重要的&#xff0c;而监控系统是就像系统的眼睛可以通过分析相关数据&#xff0c;进一步管理和运维整个分布式系统。 监控系统的的基本功能包含 全…

Java02-迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类

目录 什么是遍历&#xff1f; 一、Collection集合的遍历方式 1.迭代器遍历 方法 流程 案例 2. foreach&#xff08;增强for循环&#xff09;遍历 案例 3.Lamdba表达式遍历 案例 二、数据结构 数据结构介绍 常见数据结构 栈&#xff08;Stack&#xff09; 队列&a…

移远通信携手产业合作伙伴率先完成RedCap端网兼容性现网测试

近日&#xff0c;移远通信与中国联通携手&#xff0c;基于搭载高通骁龙X35平台的移远RedCap模组RG255C-CN&#xff0c;在上海嘉定率先完成3.5GHz、2.1GHz、900MHz 中国联通5G全频段 RedCap端网兼容性现网测试&#xff0c;为5G RedCap商用部署奠定了坚实基础。 本次5G RedCap外场…

【Python:参数解析器argparse】对命令行参数进行解析

常用的流程如下&#xff1a; 1、先创建一个解析器&#xff1a; parser argparse.ArgumentParser(description"...")2、为解析器增加参数&#xff0c;包括name、默认值、帮助信息等 parser.add_argument(name "", default ..., help ...)name前面可以…

CS5366+VL171母座正反插HDMI(CS5466也可搭配)国产芯片TYPEC方案设计 ASL电路原理图 集睿致远+威锋设计

VL171是威锋芯片,可搭配ASL集睿致远CS5366设计TypeC母座正反插转HDMI高清投屏方案&#xff0c;CS5366是2lane 芯片&#xff0c;支持4K60HZ,是CS5266的升级版&#xff0c;CS5366设计拓展坞方案可以替代CS5266携带快充100W的PD和US,多口HUB也不在话下&#xff0c;而画面的刷新率和…

在IDEA同一个窗口中同时打开多个独立项目

文章说明 本文主要说明如何在Intellij Idea中同时打开多个独立的Maven项目。 我在使用idea的时候&#xff0c;由于自己负责了很多项目&#xff0c;经常要在不通的代码之间切换来切换去。然后搜索代码的时候也只能搜到当前打开的这个项目。因为这个原因&#xff0c;一些小项目…

利用prophet实现时间序列数据结果预测及对预测数据进行年度趋势和月度值分解

第一部分&#xff1a;prophet的介绍 选取一段chatgpt对该插件的解释&#xff0c;如下&#xff1a; Prophet&#xff08;预言家&#xff09;是由Facebook开发的开源时间序列分析工具&#xff0c;旨在提供一个简单而强大的框架&#xff0c;用于预测时间序列数据。Prophet的设计目…

使用中间人攻击的arp欺骗教程

文章目录 前言一、查看网络接口配置第 1 步&#xff1a;从受害者处获取 IP 配置第 2 步&#xff1a;在 Linux 中打开数据包转发第 3 步&#xff1a;使用 arpspoof 将包重定向到您的计算机步骤4&#xff1a;拦截来自路由器的包裹步骤5&#xff1a;从目标的浏览器历史记录中嗅探图…

LeetCode 热题 100 JavaScript--102. 二叉树的层序遍历

给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]] 示例 2&#xff1a; 输入&#xff1a;root [1…

Java 线程基础

volatile happens-before原则 1、单一线程原则 在一个线程内&#xff0c;在程序前面的操作线性发生于后面的操作 2、管程锁定原则 一个unlock操作先行发生于后面对同一个锁的lock操作 3、volatile变量原则 对一个volatile变量的写操作先行发生于后面对变量的读操作 4、线…

资深测试经验总结,APP测试-关键点整理,少走3年的弯路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 APP测试它的关键点…

LeetCode--HOT100题(16)

目录 题目描述&#xff1a;238. 除自身以外数组的乘积&#xff08;中等&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;238. 除自身以外数组的乘积&#xff08;中等&#xff09; 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等…

el-table那些事

el-table那些事 获取el-table所有勾选的行数据 用于记录工作和日常学习遇到的坑&#xff0c;需求。 vue3element-plusts 获取el-table所有勾选的行数据 1、需要先声明一个ref变量&#xff0c;并赋值给el-table 2、通过el-table提供的getSelectionRows()函数获取选中的"行…