diff --git a/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs b/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs
index 733a4c9559..cf5fdccaad 100644
--- a/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs
+++ b/src/Tgstation.Server.Host/Components/Chat/Providers/DiscordProvider.cs
@@ -21,6 +21,7 @@ using Remora.Results;
using Tgstation.Server.Api.Models;
using Tgstation.Server.Host.Components.Interop;
+using Tgstation.Server.Host.Extensions;
using Tgstation.Server.Host.Jobs;
using Tgstation.Server.Host.Models;
using Tgstation.Server.Host.System;
@@ -253,9 +254,9 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
if (!result.IsSuccess)
Logger.LogWarning(
- "Failed to send to channel {channelId}: {error}",
+ "Failed to send to channel {channelId}: {result}",
channelId,
- result.Error);
+ result.LogFormat());
}
try
@@ -267,8 +268,8 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
if (!currentGuildsResponse.IsSuccess)
{
Logger.LogWarning(
- "Error retrieving current discord guilds: {error}",
- currentGuildsResponse.Error.Message);
+ "Error retrieving current discord guilds: {result}",
+ currentGuildsResponse.LogFormat());
return;
}
@@ -353,7 +354,7 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
;
if (!messageResponse.IsSuccess)
- Logger.LogWarning("Failed to post deploy embed to channel {channelId}: {errorMessage}", channelId, messageResponse.Error.Message);
+ Logger.LogWarning("Failed to post deploy embed to channel {channelId}: {result}", channelId, messageResponse.LogFormat());
return async (errorMessage, dreamMakerOutput) =>
{
@@ -412,8 +413,8 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
if (!createUpdatedMessageResponse.IsSuccess)
Logger.LogWarning(
- "Creating updated deploy embed failed! Error: {errorMessage}",
- createUpdatedMessageResponse.Error.Message);
+ "Creating updated deploy embed failed: {result}",
+ createUpdatedMessageResponse.LogFormat());
}
if (!messageResponse.IsSuccess)
@@ -431,9 +432,9 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
if (!editResponse.IsSuccess)
{
Logger.LogWarning(
- "Updating deploy embed {messageId} failed, attempting new post! Error: {errorMessage}",
+ "Updating deploy embed {messageId} failed, attempting new post: {result}",
messageResponse.Entity.ID,
- editResponse.Error.Message);
+ editResponse.LogFormat());
await CreateUpdatedMessage();
}
}
@@ -521,9 +522,10 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
guildName = messageGuildResponse.Entity.Name;
else
Logger.LogWarning(
- "Failed to get channel {channelID} in response to message {messageID}!",
+ "Failed to get channel {channelID} in response to message {messageID}: {result}",
messageCreateEvent.ChannelID,
- messageCreateEvent.ID);
+ messageCreateEvent.ID,
+ messageGuildResponse.LogFormat());
}
var result = new DiscordMessage
@@ -600,7 +602,7 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
var currentUserResult = await userClient.GetCurrentUserAsync(localCombinedCts.Token);
if (!currentUserResult.IsSuccess)
{
- Logger.LogWarning("Unable to retrieve current user: {errorMessage}", currentUserResult.Error.Message);
+ Logger.LogWarning("Unable to retrieve current user: {result}", currentUserResult.LogFormat());
throw new JobException(ErrorCode.ChatCannotConnectProvider);
}
@@ -639,7 +641,7 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
localGatewayCts.Cancel();
var gatewayResult = await localGatewayTask;
if (!gatewayResult.IsSuccess)
- Logger.LogWarning("Gateway issue: {errorMessage}", gatewayResult.Error.Message);
+ Logger.LogWarning("Gateway issue: {result}", gatewayResult.LogFormat());
localGatewayCts.Dispose();
}
@@ -672,10 +674,9 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
if (!discordChannelResponse.IsSuccess)
{
Logger.LogWarning(
- "Error retrieving discord channel {channelId}: {error} Inner: {innerError}",
+ "Error retrieving discord channel {channelId}: {result}",
channelId,
- discordChannelResponse.Error.Message,
- discordChannelResponse.Inner?.Error?.Message);
+ discordChannelResponse.LogFormat());
remapRequired = true;
return null;
}
@@ -698,10 +699,9 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
if (!guildsResponse.IsSuccess)
{
Logger.LogWarning(
- "Error retrieving discord guild {guildID}: {error} Inner: {innerError}",
+ "Error retrieving discord guild {guildID}: {result}",
guildId,
- guildsResponse.Error.Message,
- guildsResponse.Inner?.Error?.Message);
+ guildsResponse.LogFormat());
remapRequired = true;
return null;
}
diff --git a/src/Tgstation.Server.Host/Extensions/ResultExtensions.cs b/src/Tgstation.Server.Host/Extensions/ResultExtensions.cs
new file mode 100644
index 0000000000..315972920a
--- /dev/null
+++ b/src/Tgstation.Server.Host/Extensions/ResultExtensions.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Text;
+
+using Remora.Results;
+
+namespace Tgstation.Server.Host.Extensions
+{
+ ///
+ /// Extensions for .
+ ///
+ static class ResultExtensions
+ {
+ ///
+ /// Converts a given into a log entry .
+ ///
+ /// The to convert.
+ /// Used internally for nesting.
+ /// The formatted .
+ public static string LogFormat(this IResult result, uint level = 0)
+ {
+ if (result == null)
+ throw new ArgumentNullException(nameof(result));
+
+ if (result.IsSuccess)
+ return "SUCCESS?";
+
+ var stringBuilder = new StringBuilder();
+ if (result.Error != null)
+ {
+ stringBuilder.Append(result.Error.Message);
+ }
+
+ if (result.Inner != null)
+ {
+ stringBuilder.Append(Environment.NewLine);
+ ++level;
+ for (var i = 0; i < level; ++i)
+ stringBuilder.Append('\t');
+ stringBuilder.Append(result.Inner.LogFormat(level));
+ }
+
+ return stringBuilder.ToString();
+ }
+ }
+}