我将简单的HandyControl的消息打印系统和Nlog搭配使用,简化我们的代码书写
这里安装这个文章配置就行了,但是彩色控制台打印需要修改一下,Console.Colorful官网好像被占用了,只能用原生的方法改颜色了
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的打印逻辑
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();
}
}
}