Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/AsyncLogSinkBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public abstract class AsyncLogSinkBase<TWriter>(IAsyncLogMessageWriter<object, T
// │ Private Fields │
// └─────────────────────────────────────────────────────────────────────────────┘
private readonly ConcurrentDictionary<Type, object> logMessageWriters = new();

private int isDisabled;

// ┌─────────────────────────────────────────────────────────────────────────────┐
Expand Down
17 changes: 17 additions & 0 deletions src/LogSinkBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,23 @@ public IDisposable RegisterLogMessageWriter<TPayload>(ILogMessageWriter<TPayload
return new DelegateDisposable(() => logMessageWriters.TryRemove(typeof(TPayload), out _));
}

/// <summary>
/// Disables this log sink, preventing it from processing any log messages until it is re-enabled.
/// </summary>
/// <returns>A <see cref="IDisposable"/> that, when disposed, re-enables the log sink.</returns>
/// <exception cref="InvalidOperationException">Thrown if the log sink is already disabled.</exception>
public IDisposable Disable()
{
if (IsDisabled)
{
throw new InvalidOperationException("The log sink is already disabled.");
}

IsDisabled = true;

return new DelegateDisposable(() => IsDisabled = false);
}

// ┌─────────────────────────────────────────────────────────────────────────────┐
// │ Private Methods │
// └─────────────────────────────────────────────────────────────────────────────┘
Expand Down
Loading