diff --git a/MiniTwitch.Irc/IrcMembershipClient.cs b/MiniTwitch.Irc/IrcMembershipClient.cs index 49bd31a..ebe9e4a 100644 --- a/MiniTwitch.Irc/IrcMembershipClient.cs +++ b/MiniTwitch.Irc/IrcMembershipClient.cs @@ -16,7 +16,7 @@ public sealed class IrcMembershipClient : IAsyncDisposable { #region Constants private const string CONN_URL = "wss://irc-ws.chat.twitch.tv:443"; - private const string LOG_HEADER = "[MiniTwitch:Membership]"; + private const string LOG_HEADER = "Irc-Membership"; #endregion #region Properties @@ -25,6 +25,11 @@ public sealed class IrcMembershipClient : IAsyncDisposable /// public Action ExceptionHandler { get; set; } = default!; /// + /// The default logger for , only used when is not provided in client options + /// Can be toggled with + /// + public DefaultMiniTwitchLogger DefaultLogger { get; } = new(); + /// /// Whether the client is currently connected /// public bool IsConnected => _ws.IsConnected; @@ -64,6 +69,7 @@ public sealed class IrcMembershipClient : IAsyncDisposable private readonly List _joinedChannels = new(); private readonly RateLimitManager _manager; private bool _connectInvoked; + IDisposable? _loggingScope; #endregion #region Init @@ -77,6 +83,7 @@ public IrcMembershipClient(Action options) _options = clientOptions; _ws = new(_options.ReconnectionDelay, 8192); _manager = new(clientOptions); + _loggingScope = GetLogger().BeginScope(LOG_HEADER); InternalInt(); } @@ -308,9 +315,10 @@ private void HandleMessage(IrcMessage message) #endregion #region Utils + private ILogger GetLogger() => _options.Logger ?? this.DefaultLogger; private void LogEventException(Exception ex) => LogException(ex, "🚨 Exception caught in an event:"); - private void Log(LogLevel level, string template, params object[] properties) => _options.Logger?.Log(level, $"{LOG_HEADER} " + template, properties); - private void LogException(Exception ex, string template, params object[] properties) => _options.Logger?.LogError(ex, $"{LOG_HEADER} " + template, properties); + private void Log(LogLevel level, string template, params object[] properties) => GetLogger().Log(level, template, properties); + private void LogException(Exception ex, string template, params object[] properties) => GetLogger().LogError(ex, template, properties); #endregion /// @@ -320,5 +328,6 @@ public async ValueTask DisposeAsync() _joinedChannels.Clear(); _connectionWaiter.Dispose(); _joinChannelWaiter.Dispose(); + _loggingScope?.Dispose(); } }