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. ///