当前位置: 首页 > news >正文

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.lryc.cn/news/108953.html

相关文章:

  • Pytorch Tensor维度变换方法
  • 微信小程序之点击文字文字自动转语音进行播放,微信小程序文字识别转语音播放
  • 主动学习、半监督学习、它们之间的区别?
  • linux快速安装Rabbitmq
  • spconv1.2.1库的编译与安装
  • java+springboot+mysql企业邮件管理系统
  • [CKA]考试之一个 Pod 封装多个容器
  • iphone备份用什么软件?好用的苹果数据备份工具推荐!
  • 一语道破 python 迭代器和生成器
  • 有哪些开源和非开源的项目管理工具?
  • 实战 01|「编写互动式界面」
  • 开源社区寻找八月创作之星!你准备好了吗~
  • appuploader不是开发者账号
  • MySQL - 10、其他命令
  • 输入框长度在XSS测试中如何绕过字符长度限制
  • JVM基础篇-直接内存
  • 【Java可执行命令】(十四)脚本执行工具jrunscript :在命令行环境下交互式执行一些简单的脚本或测试代码片段~
  • eclipse Java Editor Templates
  • vue SKU已知sku.tree算出sku.list类目值和id
  • error C4430 缺少类型说明符 - 假定为 int。注意 C++ 不支持默认 int
  • Embedding入门介绍以及为什么Embedding在大语言模型中很重要
  • 暑假刷题第20天--8/3
  • docker容器内的django启动celery任务队列
  • linux文件描述符fd
  • 【深度学习】各个开源库总结及实战-总目录
  • Unity Shader:闪烁
  • c++开发模式桥接模式
  • javaScript 树形结构 递归查询方法。
  • MySQL语法2
  • Mysql on duplicate key update用法及优缺点