Skip to content

Commit 1e3b21e

Browse files
authored
Merge pull request #44 from WB-Tooling/default-log-message-writer
feat: refactor constructors in AsyncLogSinkBase and LogSinkBase to use required DefaultLogMessageWriter property
2 parents bd60781 + 90abe56 commit 1e3b21e

4 files changed

Lines changed: 28 additions & 11 deletions

File tree

src/LogSinks/AsyncLogSinkBase.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Diagnostics.CodeAnalysis;
23
using System.Linq;
34
using System.Threading;
45
using System.Threading.Tasks;
@@ -23,12 +24,11 @@ public abstract class AsyncLogSinkBase<TLogSinkBase> : IAsyncLogSink, IAsyncDisp
2324
/// <summary>
2425
/// Initializes a new instance of the <see cref="AsyncLogSinkBase{TLogSinkBase}"/> class with the specified default log message writer.
2526
/// </summary>
26-
/// <param name="defaultLogMessageWriter">The default log message writer to use for payload types that do not have a specific log message writer registered.</param>
27-
protected AsyncLogSinkBase(IAsyncLogMessageWriter<object> defaultLogMessageWriter)
27+
protected AsyncLogSinkBase()
2828
{
2929
logMessageWriterPipeline = new()
3030
{
31-
DefaultLogMessageWriter = defaultLogMessageWriter
31+
DefaultLogMessageWriter = DefaultLogMessageWriter
3232
};
3333

3434
logMessageWriterPipeline.Container.RegisterInstance<IAsyncLogSink>(this);
@@ -38,6 +38,11 @@ protected AsyncLogSinkBase(IAsyncLogMessageWriter<object> defaultLogMessageWrite
3838
// │ Public Properties │
3939
// └─────────────────────────────────────────────────────────────────────────────┘
4040

41+
/// <summary>
42+
/// Gets the default <see cref="IAsyncLogMessageWriter{TPayload}"/> to use for payload types that do not have a specific log message writer registered.
43+
/// </summary>
44+
public required IAsyncLogMessageWriter<object> DefaultLogMessageWriter { get; init; }
45+
4146
/// <summary>
4247
/// Gets the <see cref="IContainer"/> associated with this log sink.
4348
/// </summary>

src/LogSinks/LogSinkBase.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ public abstract class LogSinkBase<TLogSinkBase> : ILogSink, IDisposable
2121
/// <summary>
2222
/// Initializes a new instance of the <see cref="LogSinkBase{TLogSinkBase}"/> class with the specified default log message writer.
2323
/// </summary>
24-
/// <param name="defaultLogMessageWriter">The default log message writer to use for payload types that do not have a specific log message writer registered.</param>
25-
protected LogSinkBase(ILogMessageWriter<object> defaultLogMessageWriter)
24+
protected LogSinkBase()
2625
{
2726
logMessageWriterPipeline = new()
2827
{
29-
DefaultLogMessageWriter = defaultLogMessageWriter
28+
DefaultLogMessageWriter = DefaultLogMessageWriter
3029
};
3130

3231
logMessageWriterPipeline.Container.RegisterInstance<ILogSink>(this);
@@ -36,6 +35,11 @@ protected LogSinkBase(ILogMessageWriter<object> defaultLogMessageWriter)
3635
// │ Public Properties │
3736
// └─────────────────────────────────────────────────────────────────────────────┘
3837

38+
/// <summary>
39+
/// Gets the default <see cref="ILogMessageWriter{TPayload}"/> to use for payload types that do not have a specific log message writer registered.
40+
/// </summary>
41+
public required ILogMessageWriter<object> DefaultLogMessageWriter { get; init; }
42+
3943
/// <summary>
4044
/// Gets the <see cref="IContainer"/> associated with this log sink.
4145
/// </summary>

tests/AsyncLogSinkBaseTests/src/MethodTests/SubmitAsyncMethodTests.cs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@ internal sealed class DefaultLogMessageWriter : IAsyncLogMessageWriter<object>
2828
{
2929
public List<ILogMessage> WrittenMessages { get; } = [];
3030

31-
[NotNull]
32-
public TestLogSink? LogSink { get; set; }
33-
3431
public ValueTask WriteAsync(ILogMessage<object> logMessage, CancellationToken cancellationToken)
3532
{
3633
WrittenMessages.Add(logMessage);
@@ -51,8 +48,13 @@ public ValueTask WriteAsync(ILogMessage<string> logMessage, CancellationToken ca
5148
}
5249
}
5350

54-
internal sealed class TestLogSink() : AsyncLogSinkBase<TestLogSink>(new DefaultLogMessageWriter())
51+
internal sealed class TestLogSink : AsyncLogSinkBase<TestLogSink>
5552
{
53+
[SetsRequiredMembers]
54+
public TestLogSink()
55+
{
56+
DefaultLogMessageWriter = new DefaultLogMessageWriter();
57+
}
5658
}
5759

5860
public sealed class TheSubmitMethod

tests/LogSinkBaseTests/src/MethodTests/SubmitMethodTests.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,14 @@ public void Write(ILogMessage<string> logMessage)
4141
}
4242
}
4343

44-
internal sealed class TestLogSink() : LogSinkBase<TestLogSink>(new DefaultLogMessageWriter())
44+
internal sealed class TestLogSink : LogSinkBase<TestLogSink>
4545
{
46+
47+
[SetsRequiredMembers]
48+
public TestLogSink()
49+
{
50+
DefaultLogMessageWriter = new DefaultLogMessageWriter();
51+
}
4652
}
4753

4854
public sealed class TheSubmitMethod

0 commit comments

Comments
 (0)