wcs_server_s7_baoying/WcsMain/ConsoleLog.cs

252 lines
7.9 KiB
C#
Raw Permalink Normal View History

2024-06-20 09:23:01 +08:00
using System.Runtime.InteropServices;
using LogTool;
using System.Text;
namespace WcsMain;
/// <summary>
/// 输出信息
/// </summary>
public class ConsoleLog
{
private static readonly object _locker = new();
/// <summary>
/// 输出提示信息
/// </summary>
/// <param name="messages"></param>
public static void Info(params string[] messages) => Info(true, messages);
/// <summary>
/// 输出提示信息
/// </summary>
/// <param name="isShow"></param>
/// <param name="messages"></param>
public static void Info(bool isShow, params string[] messages)
{
if (!isShow) return;
if (messages == default || messages.Length == 0) return;
DateTime now = DateTime.Now;
StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
foreach (string message in messages)
{
stringBuilder.AppendLine($" -- {message}");
}
lock (_locker)
{
Console.ForegroundColor = ConsoleColor.DarkCyan;
Console.Write(stringBuilder.ToString());
WcsLog.Instance().WriteEventLog(stringBuilder);
}
}
/// <summary>
/// 输出错误信息
/// </summary>
/// <param name="messages"></param>
public static void Error(params string[] messages) => Error(true, messages);
/// <summary>
/// 输出错误信息
/// </summary>
/// <param name="isShow"></param>
/// <param name="messages"></param>
public static void Error(bool isShow, params string[] messages)
{
if (!isShow) return;
if (messages == default || messages.Length == 0) return;
DateTime now = DateTime.Now;
StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
foreach (string message in messages)
{
stringBuilder.AppendLine($" -- {message}");
}
lock (_locker)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.Write(stringBuilder.ToString());
WcsLog.Instance().WriteEventLog(stringBuilder);
}
}
/// <summary>
/// 输出异常信息
/// </summary>
/// <param name="messages"></param>
public static void Exception(params string[] messages) => Exception(true, messages);
/// <summary>
/// 输出异常信息
/// </summary>
/// <param name="isShow"></param>
/// <param name="messages"></param>
public static void Exception(bool isShow, params string[] messages)
{
if (!isShow) return;
if (messages == default || messages.Length == 0) return;
DateTime now = DateTime.Now;
StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
foreach (string message in messages)
{
stringBuilder.AppendLine($" -- {message}");
}
lock (_locker)
{
Console.ForegroundColor = ConsoleColor.DarkRed;
Console.Write(stringBuilder.ToString());
WcsLog.Instance().WriteExceptionLog(stringBuilder);
}
}
/// <summary>
/// 输出成功信息
/// </summary>
/// <param name="messages"></param>
public static void Success(params string[] messages) => Success(true, messages);
/// <summary>
/// 输出成功信息
/// </summary>
/// <param name="isShow"></param>
/// <param name="messages"></param>
public static void Success(bool isShow, params string[] messages)
{
if (!isShow) return;
if (messages == default || messages.Length == 0) return;
DateTime now = DateTime.Now;
StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
foreach (string message in messages)
{
stringBuilder.AppendLine($" -- {message}");
}
lock (_locker)
{
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.Write(stringBuilder.ToString());
WcsLog.Instance().WriteEventLog(stringBuilder);
}
}
/// <summary>
/// 输出警告信息
/// </summary>
/// <param name="messages"></param>
public static void Warning(params string[] messages) => Warning(true, messages);
/// <summary>
/// 输出警告信息
/// </summary>
/// <param name="isShow"></param>
/// <param name="messages"></param>
public static void Warning(bool isShow, params string[] messages)
{
if (!isShow) return;
if (messages == default || messages.Length == 0) return;
DateTime now = DateTime.Now;
StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
foreach (string message in messages)
{
stringBuilder.AppendLine($" -- {message}");
}
lock (_locker)
{
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.Write(stringBuilder.ToString());
WcsLog.Instance().WriteEventLog(stringBuilder);
}
}
/// <summary>
/// 输出蓝色提示信息
/// </summary>
/// <param name="messages"></param>
public static void Tip(params string[] messages) => Tip(true, messages);
/// <summary>
/// 输出蓝色提示信息
/// </summary>
/// <param name="isShow"></param>
/// <param name="messages"></param>
public static void Tip(bool isShow, params string[] messages)
{
if (!isShow) return;
if (messages == default || messages.Length == 0) return;
DateTime now = DateTime.Now;
StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
foreach (string message in messages)
{
stringBuilder.AppendLine($" -- {message}");
}
lock (_locker)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write(stringBuilder.ToString());
WcsLog.Instance().WriteEventLog(stringBuilder);
}
}
/// <summary>
/// Tcp 通讯专用
/// </summary>
/// <param name="messages"></param>
public static void Tcp(params string[] messages) => Tcp(true, messages);
/// <summary>
/// Tcp 通讯专用
/// </summary>
/// <param name="isShow"></param>
/// <param name="messages"></param>
public static void Tcp(bool isShow, params string[] messages)
{
if (!isShow) return;
if (messages == default || messages.Length == 0) return;
DateTime now = DateTime.Now;
StringBuilder stringBuilder = new();
stringBuilder.AppendLine(now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
foreach (string message in messages)
{
stringBuilder.AppendLine($" -- {message}");
}
lock (_locker)
{
Console.ForegroundColor = ConsoleColor.White;
Console.Write(stringBuilder.ToString());
WcsLog.Instance().WriteTcpLog(stringBuilder);
}
}
const int STD_INPUT_HANDLE = -10;
const uint ENABLE_QUICK_EDIT_MODE = 0x0040;
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern nint GetStdHandle(int hConsoleHandle);
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern bool GetConsoleMode(nint hConsoleHandle, out uint mode);
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern bool SetConsoleMode(nint hConsoleHandle, uint mode);
/// <summary>
/// 禁用快速编辑 ---- 此项会屏蔽控制台输入
/// </summary>
public static void DisbleQuickEditMode()
{
nint hStdin = GetStdHandle(STD_INPUT_HANDLE);
GetConsoleMode(hStdin, out uint mode);
mode &= ~ENABLE_QUICK_EDIT_MODE;
SetConsoleMode(hStdin, mode);
}
}