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

前言

有时候我们想要靠打印获得程序信息,因为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 = -1, LogLevel state = LogLevel.Debug)
	    {
	        if ((int)state >= PrintLevel)
	        {
	
	            if (deep != -1)
	            {
	                
	                ColorPrint($"{state.ToString()}:\t" + msg, (int)state);
	                var deepMsg = TraceMethodInfo(deep);
	                Console.WriteLine("\t" + deepMsg);
	            }
	            else
	            {
	                var deepMsg = TraceMethodInfo(0);
	                //Console.WriteLine("\t" + deepMsg);
	                ColorPrint($"{state.ToString()}:\t{msg}  {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);

        }
    }

打印结果

在这里插入图片描述

总结

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值