| @@ -40,7 +40,7 @@ namespace Discord | |||||
| config.VoiceClientId = unchecked(++_nextVoiceClientId); | config.VoiceClientId = unchecked(++_nextVoiceClientId); | ||||
| return new DiscordWSClient(config, server.Id); | return new DiscordWSClient(config, server.Id); | ||||
| }); | }); | ||||
| client.LogMessage += (s, e) => RaiseOnLog(e.Severity, e.Source, $"(#{client.Config.VoiceClientId}) {e.Message}"); | |||||
| client.LogMessage += (s, e) => RaiseOnLog(e.Severity, e.Source, $"(#{client.Config.VoiceClientId}) {e.Message}", e.Exception); | |||||
| await client.Connect(_gateway, _token).ConfigureAwait(false); | await client.Connect(_gateway, _token).ConfigureAwait(false); | ||||
| return client; | return client; | ||||
| } | } | ||||
| @@ -47,13 +47,15 @@ namespace Discord | |||||
| public LogMessageSeverity Severity { get; } | public LogMessageSeverity Severity { get; } | ||||
| public LogMessageSource Source { get; } | public LogMessageSource Source { get; } | ||||
| public string Message { get; } | public string Message { get; } | ||||
| public Exception Exception { get; } | |||||
| internal LogMessageEventArgs(LogMessageSeverity severity, LogMessageSource source, string msg) | |||||
| internal LogMessageEventArgs(LogMessageSeverity severity, LogMessageSource source, string msg, Exception exception) | |||||
| { | { | ||||
| Severity = severity; | Severity = severity; | ||||
| Source = source; | Source = source; | ||||
| Message = msg; | |||||
| } | |||||
| Message = msg; | |||||
| Exception = exception; | |||||
| } | |||||
| } | } | ||||
| public sealed class VoicePacketEventArgs | public sealed class VoicePacketEventArgs | ||||
| @@ -88,10 +90,10 @@ namespace Discord | |||||
| RaiseEvent(nameof(Disconnected), () => Disconnected(this, e)); | RaiseEvent(nameof(Disconnected), () => Disconnected(this, e)); | ||||
| } | } | ||||
| public event EventHandler<LogMessageEventArgs> LogMessage; | public event EventHandler<LogMessageEventArgs> LogMessage; | ||||
| internal void RaiseOnLog(LogMessageSeverity severity, LogMessageSource source, string message) | |||||
| internal void RaiseOnLog(LogMessageSeverity severity, LogMessageSource source, string message, Exception exception = null) | |||||
| { | { | ||||
| if (LogMessage != null) | if (LogMessage != null) | ||||
| RaiseEvent(nameof(LogMessage), () => LogMessage(this, new LogMessageEventArgs(severity, source, message))); | |||||
| RaiseEvent(nameof(LogMessage), () => LogMessage(this, new LogMessageEventArgs(severity, source, message, exception))); | |||||
| } | } | ||||
| public event EventHandler VoiceConnected; | public event EventHandler VoiceConnected; | ||||
| @@ -82,7 +82,7 @@ namespace Discord | |||||
| if (!_config.VoiceOnly) | if (!_config.VoiceOnly) | ||||
| { | { | ||||
| socket.LogMessage += (s, e) => RaiseOnLog(e.Severity, LogMessageSource.DataWebSocket, e.Message); | |||||
| socket.LogMessage += (s, e) => RaiseOnLog(e.Severity, LogMessageSource.DataWebSocket, e.Message, e.Exception); | |||||
| if (_config.LogLevel >= LogMessageSeverity.Info) | if (_config.LogLevel >= LogMessageSeverity.Info) | ||||
| { | { | ||||
| socket.Connected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.DataWebSocket, "Connected"); | socket.Connected += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.DataWebSocket, "Connected"); | ||||
| @@ -96,7 +96,7 @@ namespace Discord | |||||
| internal virtual VoiceWebSocket CreateVoiceSocket() | internal virtual VoiceWebSocket CreateVoiceSocket() | ||||
| { | { | ||||
| var socket = new VoiceWebSocket(this); | var socket = new VoiceWebSocket(this); | ||||
| socket.LogMessage += (s, e) => RaiseOnLog(e.Severity, LogMessageSource.VoiceWebSocket, e.Message); | |||||
| socket.LogMessage += (s, e) => RaiseOnLog(e.Severity, LogMessageSource.VoiceWebSocket, e.Message, e.Exception); | |||||
| socket.Connected += (s, e) => RaiseVoiceConnected(); | socket.Connected += (s, e) => RaiseVoiceConnected(); | ||||
| socket.Disconnected += async (s, e) => | socket.Disconnected += async (s, e) => | ||||
| { | { | ||||
| @@ -288,7 +288,7 @@ namespace Discord | |||||
| { | { | ||||
| var ex2 = ex.GetBaseException(); | var ex2 = ex.GetBaseException(); | ||||
| RaiseOnLog(LogMessageSeverity.Error, LogMessageSource.Client, | RaiseOnLog(LogMessageSeverity.Error, LogMessageSource.Client, | ||||
| $"{name}'s handler raised {ex2.GetType().Name}: ${ex2.Message}"); | |||||
| $"{name}'s handler raised {ex2.GetType().Name}: ${ex2.Message}", ex); | |||||
| } | } | ||||
| } | } | ||||