File tree Expand file tree Collapse file tree 2 files changed +37
-1
lines changed
src/dotnetCampus.Logger/Writers Expand file tree Collapse file tree 2 files changed +37
-1
lines changed Original file line number Diff line number Diff line change 8
8
9
9
namespace dotnetCampus . Logging . Writers ;
10
10
11
+ /// <summary>
12
+ /// 在控制台输出日志的日志记录器。
13
+ /// </summary>
11
14
public class ConsoleLogger : ILogger
12
15
{
13
16
/// <summary>
@@ -17,6 +20,16 @@ public class ConsoleLogger : ILogger
17
20
18
21
private readonly RepeatLoggerDetector _repeat ;
19
22
23
+ /// <summary>
24
+ /// 创建一个 <see cref="ConsoleLogger"/> 的新实例。
25
+ /// </summary>
26
+ /// <param name="threadMode">指定控制台日志的线程安全模式。</param>
27
+ /// <param name="mainArgs">Main 方法的参数。</param>
28
+ public ConsoleLogger ( LogWritingThreadMode threadMode = LogWritingThreadMode . NotThreadSafe , string [ ] ? mainArgs = null )
29
+ : this ( threadMode . CreateCoreLogWriter ( ) , TagFilterManager . FromCommandLineArgs ( mainArgs ?? [ ] ) )
30
+ {
31
+ }
32
+
20
33
internal ConsoleLogger ( ICoreLogWriter coreWriter , TagFilterManager ? tagManager )
21
34
{
22
35
_repeat = new RepeatLoggerDetector ( ClearAndMoveToLastLine ) ;
Original file line number Diff line number Diff line change 1
- namespace dotnetCampus . Logging . Writers ;
1
+ using System ;
2
+ using dotnetCampus . Logging . Writers . Helpers ;
3
+
4
+ namespace dotnetCampus . Logging . Writers ;
2
5
3
6
/// <summary>
4
7
/// 表示如何管理日志的写入线程。
@@ -23,3 +26,23 @@ public enum LogWritingThreadMode
23
26
/// </remarks>
24
27
ProducerConsumer ,
25
28
}
29
+
30
+ /// <summary>
31
+ /// 包含 <see cref="LogWritingThreadMode"/> 的扩展方法。
32
+ /// </summary>
33
+ internal static class LogWritingThreadModeExtensions
34
+ {
35
+ /// <summary>
36
+ /// 根据 <see cref="LogWritingThreadMode"/> 创建对应的 <see cref="ICoreLogWriter"/> 实例。
37
+ /// </summary>
38
+ /// <param name="threadMode">线程安全模式。</param>
39
+ /// <returns>最终日志写入器。</returns>
40
+ /// <exception cref="ArgumentOutOfRangeException">当线程安全模式不支持时抛出。</exception>
41
+ public static ICoreLogWriter CreateCoreLogWriter ( this LogWritingThreadMode threadMode ) => threadMode switch
42
+ {
43
+ LogWritingThreadMode . NotThreadSafe => new NotThreadSafeLogWriter ( ) ,
44
+ LogWritingThreadMode . Lock => new LockLogWriter ( ) ,
45
+ LogWritingThreadMode . ProducerConsumer => new ProducerConsumerLogWriter ( ) ,
46
+ _ => throw new ArgumentOutOfRangeException ( nameof ( threadMode ) ) ,
47
+ } ;
48
+ }
You can’t perform that action at this time.
0 commit comments