@@ -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); | |||||
} | } | ||||
} | } | ||||