diff --git a/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs b/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs
index c383c75da8..f32698a3b0 100644
--- a/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs
+++ b/src/Tgstation.Server.Host/Components/Chat/Providers/IrcProvider.cs
@@ -13,6 +13,7 @@ using Newtonsoft.Json;
using Tgstation.Server.Api.Models;
using Tgstation.Server.Host.Components.Interop;
+using Tgstation.Server.Host.Configuration;
using Tgstation.Server.Host.Extensions;
using Tgstation.Server.Host.IO;
using Tgstation.Server.Host.Jobs;
@@ -87,6 +88,11 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
///
readonly IAssemblyInformationProvider assemblyInfo;
+ ///
+ /// The for the .
+ ///
+ readonly FileLoggingConfiguration loggingConfiguration;
+
///
/// The client.
///
@@ -110,12 +116,14 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
/// The for the .
/// The to get the from.
/// The for the .
+ /// The for the .
public IrcProvider(
IJobManager jobManager,
IAsyncDelayer asyncDelayer,
ILogger logger,
IAssemblyInformationProvider assemblyInformationProvider,
- Models.ChatBot chatBot)
+ Models.ChatBot chatBot,
+ FileLoggingConfiguration loggingConfiguration)
: base(jobManager, asyncDelayer, logger, chatBot)
{
ArgumentNullException.ThrowIfNull(assemblyInformationProvider);
@@ -132,7 +140,8 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
password = ircBuilder.Password!;
passwordType = ircBuilder.PasswordType;
- assemblyInfo = assemblyInformationProvider;
+ assemblyInfo = assemblyInformationProvider ?? throw new ArgumentNullException(nameof(assemblyInformationProvider));
+ this.loggingConfiguration = loggingConfiguration ?? throw new ArgumentNullException(nameof(loggingConfiguration));
client = InstantiateClient();
@@ -731,14 +740,17 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
newClient.OnChannelMessage += Client_OnChannelMessage;
newClient.OnQueryMessage += Client_OnQueryMessage;
- /* newClient.OnReadLine += (sender, e) => Logger.LogTrace("READ: {line}", e.Line);
- newClient.OnWriteLine += (sender, e) => Logger.LogTrace("WRITE: {line}", e.Line); */
+ if (loggingConfiguration.ProviderNetworkDebug)
+ {
+ newClient.OnReadLine += (sender, e) => Logger.LogTrace("READ: {line}", e.Line);
+ newClient.OnWriteLine += (sender, e) => Logger.LogTrace("WRITE: {line}", e.Line);
+ }
newClient.OnError += (sender, e) =>
- {
- Logger.LogError("IRC ERROR: {error}", e.ErrorMessage);
- newClient.Disconnect();
- };
+ {
+ Logger.LogError("IRC ERROR: {error}", e.ErrorMessage);
+ newClient.Disconnect();
+ };
return newClient;
}
diff --git a/src/Tgstation.Server.Host/Components/Chat/Providers/ProviderFactory.cs b/src/Tgstation.Server.Host/Components/Chat/Providers/ProviderFactory.cs
index ed3608b92d..41113d196f 100644
--- a/src/Tgstation.Server.Host/Components/Chat/Providers/ProviderFactory.cs
+++ b/src/Tgstation.Server.Host/Components/Chat/Providers/ProviderFactory.cs
@@ -40,6 +40,11 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
///
readonly GeneralConfiguration generalConfiguration;
+ ///
+ /// The for the .
+ ///
+ readonly FileLoggingConfiguration loggingConfiguration;
+
///
/// Initializes a new instance of the class.
///
@@ -48,18 +53,21 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
/// The value of .
/// The value of .
/// The containing the value of .
+ /// The containing the value of .
public ProviderFactory(
IJobManager jobManager,
IAssemblyInformationProvider assemblyInformationProvider,
IAsyncDelayer asyncDelayer,
ILoggerFactory loggerFactory,
- IOptions generalConfigurationOptions)
+ IOptions generalConfigurationOptions,
+ IOptions loggingConfigurationOptions)
{
this.jobManager = jobManager ?? throw new ArgumentNullException(nameof(jobManager));
this.loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory));
this.asyncDelayer = asyncDelayer ?? throw new ArgumentNullException(nameof(asyncDelayer));
this.assemblyInformationProvider = assemblyInformationProvider ?? throw new ArgumentNullException(nameof(assemblyInformationProvider));
generalConfiguration = generalConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(generalConfigurationOptions));
+ loggingConfiguration = loggingConfigurationOptions?.Value ?? throw new ArgumentNullException(nameof(loggingConfigurationOptions));
}
///
@@ -73,7 +81,8 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
asyncDelayer,
loggerFactory.CreateLogger(),
assemblyInformationProvider,
- settings),
+ settings,
+ loggingConfiguration),
ChatProvider.Discord => new DiscordProvider(
jobManager,
asyncDelayer,
diff --git a/src/Tgstation.Server.Host/Configuration/FileLoggingConfiguration.cs b/src/Tgstation.Server.Host/Configuration/FileLoggingConfiguration.cs
index 534daf8ebb..6bd98f2039 100644
--- a/src/Tgstation.Server.Host/Configuration/FileLoggingConfiguration.cs
+++ b/src/Tgstation.Server.Host/Configuration/FileLoggingConfiguration.cs
@@ -29,6 +29,11 @@ namespace Tgstation.Server.Host.Configuration
///
public bool Disable { get; set; }
+ ///
+ /// If Chat Providers should log their network traffic. Normally disabled because it is too noisy.
+ ///
+ public bool ProviderNetworkDebug { get; set; }
+
///
/// The minimum to display in logs.
///