XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEExtension.NetCore.XFEConsole

扩展日志系统:支持多类型与ANSI控制台输出

本次更新引入 LogType 枚举和 XFEConsoleLogOptions 配置类,支持内存日志与文件日志类型(FileLog 预留),并优化 UseXFEConsoleLog 初始化方式。新增 ConsoleAnsi 辅助类,自动启用 Windows 控制台 ANSI 转义序列,提升日志输出兼容性。项目版本升级至 2.2.0,允许 unsafe 代码块。整体提升日志系统的可配置性与扩展性。

677f60b
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

5 个文件 +112 -8
Added XFEExtension.NetCore.XFEConsole/Models/LogType.cs +16 -0
@@ -0,0 +1,16 @@
1 namespace XFEExtension.NetCore.XFEConsole.Models;
2
3 /// <summary>
4 /// 日志类型
5 /// </summary>
6 public enum LogType
7 {
8 /// <summary>
9 /// 内存日志,日志内容保存在内存中,适合短期使用和调试,程序结束后日志将丢失
10 /// </summary>
11 MemoryLog = 0,
12 /// <summary>
13 /// 文件日志,日志内容保存在文件中,适合长期保存和分析,程序结束后日志不会丢失
14 /// </summary>
15 FileLog = 1
16 }
Added XFEExtension.NetCore.XFEConsole/Options/XFEConsoleLogOptions.cs +30 -0
@@ -0,0 +1,30 @@
1 using XFEExtension.NetCore.XFEConsole.Models;
2
3 namespace XFEExtension.NetCore.XFEConsole.Options;
4
5 /// <summary>
6 /// XFE控制台日志选项
7 /// </summary>
8 public class XFEConsoleLogOptions
9 {
10 /// <summary>
11 /// 是否启用日志输出(默认值为 true)。如果启用,日志将被输出到控制台或文件中,具体取决于 LogType 的设置。
12 /// </summary>
13 public bool EnableLogging { get; set; } = true;
14 /// <summary>
15 /// 是否自动应用时间信息(默认值为 true)。如果启用,日志将自动包含时间戳信息。
16 /// </summary>
17 public bool AutoApplyTimeInfo { get; set; } = true;
18 /// <summary>
19 /// 是否使用 ANSI 控制台编码(默认值为 true)。如果启用,日志输出将使用 ANSI 编码,这对于在控制台中正确显示特殊字符和颜色非常重要。
20 /// </summary>
21 public bool UseAnsiConsoleEncoding { get; set; } = true;
22 /// <summary>
23 /// 日志文本最大长度,超过该长度的日志文本将被截断(默认值为 -1)。
24 /// </summary>
25 public int LogTextMaximizeLength { get; set; } = -1;
26 /// <summary>
27 /// 日志类型(默认值为 LogType.FileLog)
28 /// </summary>
29 public LogType LogType { get; set; } = LogType.FileLog;
30 }
Added XFEExtension.NetCore.XFEConsole/Utilities/Helpers/ConsoleAnsi.cs +35 -0
@@ -0,0 +1,35 @@
1 using System.Runtime.InteropServices;
2
3 namespace XFEExtension.NetCore.XFEConsole.Utilities.Helpers;
4
5 /// <summary>
6 /// 控制台ANSI转义序列启用器
7 /// </summary>
8 public static partial class ConsoleAnsi
9 {
10 const int STD_OUTPUT_HANDLE = -11;
11 const uint ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004;
12
13 [LibraryImport("kernel32.dll")]
14 private static partial IntPtr GetStdHandle(int nStdHandle);
15
16 [LibraryImport("kernel32.dll")]
17 [return: MarshalAs(UnmanagedType.Bool)]
18 private static partial bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);
19
20 [LibraryImport("kernel32.dll")]
21 [return: MarshalAs(UnmanagedType.Bool)]
22 private static partial bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode);
23
24 /// <summary>
25 /// 启用控制台ANSI转义序列支持,使得控制台能够正确解析和显示ANSI转义序列(如颜色、光标控制等)。
26 /// </summary>
27 public static void Enable()
28 {
29 var handle = GetStdHandle(STD_OUTPUT_HANDLE);
30 if (GetConsoleMode(handle, out uint mode))
31 {
32 SetConsoleMode(handle, mode | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
33 }
34 }
35 }
Modified XFEExtension.NetCore.XFEConsole/XFEConsole.cs +27 -5
@@ -1,4 +1,6 @@
1 1 using System.Diagnostics;
2 using XFEExtension.NetCore.XFEConsole.Options;
3 using XFEExtension.NetCore.XFEConsole.Utilities.Helpers;
2 4 using XFEExtension.NetCore.XFETransform;
3 5 using XFEExtension.NetCore.XFETransform.ObjectInfoAnalyzer;
4 6 using XFEExtension.NetCore.XFETransform.StringConverter;
@@ -77,16 +79,36 @@ public static class XFEConsole
77 79 /// <summary>
78 80 /// 使用XFE控制台日志
79 81 /// </summary>
80 public static void UseXFEConsoleLog(bool useMemoryLog = false, bool autoAddTimeInfo = true, long logTextMaximizeLength = -1)
82 public static void UseXFEConsoleLog(XFEConsoleLogOptions xFEConsoleLogOptions)
81 83 {
82 84 EnableLog = true;
83 if (useMemoryLog)
84 Log = new XFEMemoryLog();
85 Log.AutoAddTimeInfo = autoAddTimeInfo;
86 Log.LogTextMaximizeLength = logTextMaximizeLength;
85 switch (xFEConsoleLogOptions.LogType)
86 {
87 case Models.LogType.MemoryLog:
88 Log = new XFEMemoryLog();
89 break;
90 case Models.LogType.FileLog:
91 break;
92 default:
93 break;
94 }
95 Log.AutoAddTimeInfo = xFEConsoleLogOptions.AutoApplyTimeInfo;
96 Log.LogTextMaximizeLength = xFEConsoleLogOptions.LogTextMaximizeLength;
97 if (xFEConsoleLogOptions.UseAnsiConsoleEncoding)
98 ConsoleAnsi.Enable();
87 99 SetConsoleOutput();
88 100 }
89 101 /// <summary>
102 /// 使用XFE控制台日志
103 /// </summary>
104 /// <param name="optionBuilder"></param>
105 public static void UseXFEConsoleLog(Action<XFEConsoleLogOptions> optionBuilder)
106 {
107 var options = new XFEConsoleLogOptions();
108 optionBuilder(options);
109 UseXFEConsoleLog(options);
110 }
111 /// <summary>
90 112 /// 停止XFE控制台
91 113 /// </summary>
92 114 /// <returns></returns>
Modified XFEExtension.NetCore.XFEConsole/XFEExtension.NetCore.XFEConsole.csproj +4 -3
@@ -4,7 +4,7 @@
4 4 <TargetFramework>net10.0</TargetFramework>
5 5 <ImplicitUsings>enable</ImplicitUsings>
6 6 <Nullable>enable</Nullable>
7 <Version>2.1.0</Version>
7 <Version>2.2.0</Version>
8 8 <Authors>XFEstudio</Authors>
9 9 <Company>寰宇朽力网络科技</Company>
10 10 <Description>XFEConsole是一个可以运行用户进行远程输出的调试辅助工具,需要配合XFE工具箱来使用,当然也可以根据本DLL内的架构搭建一个调试工具</Description>
@@ -15,14 +15,15 @@
15 15 <RepositoryUrl>https://github.com/XFEstudio/XFEExtension.NetCore.XFEConsole.git</RepositoryUrl>
16 16 <PackageTags>XFE;Console;Test;Out;Output;Remote;</PackageTags>
17 17 <PackageReleaseNotes>
18 支持控制台彩色日志输出及相关代码优化
18 扩展日志系统:支持多类型与ANSI控制台输出
19 19
20 简化了 XFEConsole 的连接逻辑,优化了日志输出流程。XFELogEntry 新增 ToString(bool useConsoleColor) 方法,支持 ANSI 彩色日志输出,并对日志时间、级别和数字进行高亮显示。XFELog 优化了日志长度统计和写入逻辑,提升了代码可读性和维护性。
20 本次更新引入 LogType 枚举和 XFEConsoleLogOptions 配置类,支持内存日志与文件日志类型(FileLog 预留),并优化 UseXFEConsoleLog 初始化方式。新增 ConsoleAnsi 辅助类,自动启用 Windows 控制台 ANSI 转义序列,提升日志输出兼容性。项目版本升级至 2.2.0,允许 unsafe 代码块。整体提升日志系统的可配置性与扩展性。
21 21 </PackageReleaseNotes>
22 22 <PackageLicenseFile>LICENSE</PackageLicenseFile>
23 23 <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
24 24 <Title>XFEExtension.NetCore.XFEConsole</Title>
25 25 <GenerateDocumentationFile>True</GenerateDocumentationFile>
26 <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
26 27 </PropertyGroup>
27 28
28 29 <ItemGroup>