WPF 消息日志打印帮助类:HandyControl+NLog+彩色控制台打印

前言

我将简单的HandyControl的消息打印系统和Nlog搭配使用,简化我们的代码书写

相关文章

.NET 控制台NLog 使用

WPF-UI HandyControl 控件简单实战

C#更改控制台文字输出颜色

Nlog配置

这里安装这个文章配置就行了,但是彩色控制台打印需要修改一下,Console.Colorful官网好像被占用了,只能用原生的方法改颜色了

在这里插入图片描述

.NET 控制台NLog 使用

C#更改控制台文字输出颜色

using NLog.Config;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WpfApp1.Utils
{
   
    public static class NLogHelper
    {
   
        private static Logger logger;

        static NLogHelper()
        {
   
            LogManager.Configuration = new XmlLoggingConfiguration(string.Format("{0}/NLog.config", AppDomain.CurrentDomain.BaseDirectory.ToString()));
            logger = NLog.LogManager.GetCurrentClassLogger();
        }

        public static void Debug(string msg)
        {
   
            Console.WriteLine(msg);
            logger.Debug(msg);
        }

        public static void Info(string msg)
        {
   
            ConsoleWirte(msg,ConsoleColor.Green);
            logger.Info(msg);

        }

        public static void Error(string msg)
        {
   
            ConsoleWirte(msg, ConsoleColor.Red);

            logger.Error(msg);
        }

        public static void Warning(string msg)
        {
   
            ConsoleWirte(msg, ConsoleColor.Yellow);
            logger.Warn(msg);
        }

        public static void ConsoleWirte(string msg,ConsoleColor color)
        {
   
            Console.ForegroundColor = color;
            Console.WriteLine(msg);
            Console.ResetColor();
        }
    }
}

HandyControl配置

修改了一下HandyControl的打印逻辑

using HandyControl.Controls;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WpfApp1.Utils
{
   
    public static class MsgHelper
    {
   
        public enum MsgType {
    Info, Warn, Error, Success, Fatal }

        /// <summary>
        /// 打印消息
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="type"></param>
        /// <param name="isGlobal"></param>
        public static void ShowMsg(string msg, MsgType type, bool isGlobal = false)
        {
   
            if (isGlobal)
            {
   
                switch (type)
                {
   
                    case MsgType.Info:
                        NLogHelper.Info(msg);
                        Growl.InfoGlobal(msg);
                        break;
                    case MsgType.Warn:
                        NLogHelper.Warning(msg);
                        Growl.WarningGlobal(msg);
                        break;
                    case MsgType.Error:
                        NLogHelper.Error(msg);
                        Growl.ErrorGlobal(msg);
                        break;
                    case MsgType.Success:
                        NLogHelper.Info(msg);
                        Growl.SuccessGlobal(msg);
                        break;
                    case MsgType.Fatal:
                        NLogHelper.Error(msg);
                        Growl.FatalGlobal(msg);
                        break;
                }
            }
            else
            {
   
                switch (type)
                {
   
                    case MsgType.Info:
                        NLogHelper.Info(msg);
                        Growl.Info(msg);
                        break;
                    case MsgType.Warn:
                        NLogHelper.Warning(msg);
                        Growl.Warning(msg);
                        break;
                    case MsgType.Error:
                        NLogHelper.Error(msg);
                        Growl.Error(msg);
                        break;
                    case MsgType.Success:
                        NLogHelper.Info(msg);
                        Growl.Success(msg);
                        break;
                    case MsgType.Fatal:
                        NLogHelper.Error(msg);
                        Growl.Fatal(msg);
                        break;
                }
            }
        }

        /// <summary>
        /// 询问回调
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="callback"></param>
        /// <param name="isGlobal"></param>
        public static void Ask(string msg, Action<bool> callback, bool isGlobal = false)
        {
   
            NLogHelper.Info(msg);
            if (isGlobal)
            {
   
                Growl.AskGlobal(msg, isConfrimed =>
                {
   
                    callback(isConfrimed);
                    return true;
                });
            }
            else
            {
   
                Growl.Ask(msg, isConfrimed =>
                {
   
                    callback(isConfrimed);
                    return true;
                });
            }
        }

        /// <summary>
        /// 强制清空全部消息
        /// </summary>
        public static void CleanAll()
        {
   
            Growl.Clear();
            Growl.ClearGlobal();
        }


    }
}


简单使用

在这里插入图片描述

显示效果

在这里插入图片描述

文本内容

在这里插入图片描述

相关推荐

  1. idea 如何开启mybatis控制台SQL日志打印

    2023-12-27 07:14:04       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-27 07:14:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-27 07:14:04       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-27 07:14:04       82 阅读
  4. Python语言-面向对象

    2023-12-27 07:14:04       91 阅读

热门阅读

  1. 【VS】如何把wpf项目打包成exe文件

    2023-12-27 07:14:04       47 阅读
  2. 数据库的连接池详解

    2023-12-27 07:14:04       52 阅读
  3. 单元测试实战

    2023-12-27 07:14:04       67 阅读
  4. WPF RelativeSource

    2023-12-27 07:14:04       58 阅读
  5. 10分钟了解nextTick,并实现简易版本的nextTick

    2023-12-27 07:14:04       50 阅读
  6. 【Python】FastAPI学习记录(二)

    2023-12-27 07:14:04       66 阅读
  7. 14.bash shell中的for/while/until循环

    2023-12-27 07:14:04       65 阅读
  8. zookeeper 面试

    2023-12-27 07:14:04       49 阅读
  9. node express简单微服务

    2023-12-27 07:14:04       52 阅读
  10. Nginx Unit 1.27.0 发布

    2023-12-27 07:14:04       62 阅读