Skip to content

Commit eed8b17

Browse files
committed
根据代码审查意见修改
1 parent 4963312 commit eed8b17

File tree

2 files changed

+22
-28
lines changed

2 files changed

+22
-28
lines changed

src/DotNetCampus.Logger/Writers/ConsoleLogger.cs

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,20 @@ namespace DotNetCampus.Logging.Writers;
1515
/// </summary>
1616
public class ConsoleLogger : ILogger
1717
{
18+
private static readonly TextWriter Out = GetStandardOutputWriter();
19+
1820
/// <summary>
19-
/// 控制台光标控制是否启用
21+
/// 用于处理重复的日志,避免重复日志污染控制台输出内容
2022
/// </summary>
21-
private readonly bool _isCursorMovementEnabled;
2223
private readonly RepeatLoggerDetector _repeat;
23-
private static bool _isConsoleOutput;
24-
private static readonly TextWriter Out = GetStandardOutputWriter();
24+
25+
/// <summary>
26+
/// 判断当前是否在控制台输出日志(否则可能在普通的标准输入流,被其他应用程序对接)。
27+
/// </summary>
28+
/// <remarks>
29+
/// 如果在控制台输出,则可以使用 ASCII 控制码来修改颜色、控制光标移动。也可以用来获取控制台窗口信息。
30+
/// </remarks>
31+
private readonly bool _isConsoleOutput;
2532

2633
/// <summary>
2734
/// 创建一个 <see cref="ConsoleLogger"/> 的新实例。
@@ -38,10 +45,7 @@ internal ConsoleLogger(ICoreLogWriter coreWriter, TagFilterManager? tagManager)
3845
_repeat = new RepeatLoggerDetector(ClearAndMoveToLastLine);
3946
CoreWriter = coreWriter;
4047
TagManager = tagManager;
41-
_isConsoleOutput = Out == Console.Out;
42-
var success = ConsoleInitializer.Initialize();
43-
// 如果输出流是自己创建的,则不支持光标移动。
44-
_isCursorMovementEnabled = _isConsoleOutput && success;
48+
_isConsoleOutput = ConsoleInitializer.Initialize();
4549
}
4650

4751
/// <summary>
@@ -179,7 +183,7 @@ string FirstLineFormatter(string m, int i) => logLevel is LogLevel.Critical
179183
/// <param name="repeatCount">此移动光标,是因为日志已重复第几次。</param>
180184
private void ClearAndMoveToLastLine(int repeatCount)
181185
{
182-
if (!_isCursorMovementEnabled)
186+
if (!_isConsoleOutput)
183187
{
184188
// 如果光标控制不可用,或者还没有重复次数,则不尝试移动光标。
185189
return;
@@ -256,10 +260,12 @@ private int SafeGetBufferWidth()
256260
{
257261
try
258262
{
259-
return _isCursorMovementEnabled ? Console.WindowWidth : 0;
263+
return _isConsoleOutput ? Console.WindowWidth : 0;
260264
}
261265
catch (IOException)
262266
{
267+
// _isConsoleOutput 的条件已经非常苛刻了,足以确保 Console.WindowWidth 的获取不会出现异常。
268+
// 这只是保险性捕获。
263269
return 0;
264270
}
265271
}

src/DotNetCampus.Logger/Writers/Helpers/TagFilterManager.cs

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,17 @@ internal class TagFilterManager
1515
/// <summary>
1616
/// 当前已设置的任一标签。(无前缀)
1717
/// </summary>
18-
#if NET6_0_OR_GREATER
19-
public required IReadOnlySet<string> AnyFilterTags { get; init; }
20-
#else
21-
public required HashSet<string> AnyFilterTags { get; init; }
22-
#endif
18+
internal required IReadOnlyList<string> AnyFilterTags { get; init; }
2319

2420
/// <summary>
2521
/// 当前已设置的包含标签。(前缀为 +)
2622
/// </summary>
27-
#if NET6_0_OR_GREATER
28-
public required IReadOnlySet<string> IncludingFilterTags { get; init; }
29-
#else
30-
public required HashSet<string> IncludingFilterTags { get; init; }
31-
#endif
23+
internal required IReadOnlyList<string> IncludingFilterTags { get; init; }
3224

3325
/// <summary>
3426
/// 当前已设置的排除标签。(前缀为 -)
3527
/// </summary>
36-
#if NET6_0_OR_GREATER
37-
public required IReadOnlySet<string> ExcludingFilterTags { get; init; }
38-
#else
39-
public required HashSet<string> ExcludingFilterTags { get; init; }
40-
#endif
28+
internal required IReadOnlyList<string> ExcludingFilterTags { get; init; }
4129

4230
/// <summary>
4331
/// 判断某个日志是否满足当前标签过滤条件。
@@ -127,9 +115,9 @@ internal bool IsTagEnabled(string text)
127115
return null;
128116
}
129117

130-
HashSet<string> anyFilterTags = [];
131-
HashSet<string> includingFilterTags = [];
132-
HashSet<string> excludingFilterTags = [];
118+
List<string> anyFilterTags = [];
119+
List<string> includingFilterTags = [];
120+
List<string> excludingFilterTags = [];
133121
var filterTags = value.Split([',', ';', ' ']);
134122
foreach (var tag in filterTags)
135123
{

0 commit comments

Comments
 (0)