debug var for irc provider

This commit is contained in:
craftxbox
2024-10-03 21:39:06 -02:30
parent 8e9cb0eb3a
commit 0efd4c400f
3 changed files with 36 additions and 10 deletions
@@ -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
/// </summary>
readonly IAssemblyInformationProvider assemblyInfo;
/// <summary>
/// The <see cref="FileLoggingConfiguration"/> for the <see cref="IrcProvider"/>.
/// </summary>
readonly FileLoggingConfiguration loggingConfiguration;
/// <summary>
/// The <see cref="IrcFeatures"/> client.
/// </summary>
@@ -110,12 +116,14 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
/// <param name="logger">The <see cref="ILogger"/> for the <see cref="Provider"/>.</param>
/// <param name="assemblyInformationProvider">The <see cref="IAssemblyInformationProvider"/> to get the <see cref="IAssemblyInformationProvider.VersionString"/> from.</param>
/// <param name="chatBot">The <see cref="Models.ChatBot"/> for the <see cref="Provider"/>.</param>
/// <param name="loggingConfiguration">The <see cref="FileLoggingConfiguration"/> for the <see cref="Provider"/>.</param>
public IrcProvider(
IJobManager jobManager,
IAsyncDelayer asyncDelayer,
ILogger<IrcProvider> 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;
}
@@ -40,6 +40,11 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
/// </summary>
readonly GeneralConfiguration generalConfiguration;
/// <summary>
/// The <see cref="FileLoggingConfiguration"/> for the <see cref="ProviderFactory"/>.
/// </summary>
readonly FileLoggingConfiguration loggingConfiguration;
/// <summary>
/// Initializes a new instance of the <see cref="ProviderFactory"/> class.
/// </summary>
@@ -48,18 +53,21 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
/// <param name="asyncDelayer">The value of <see cref="asyncDelayer"/>.</param>
/// <param name="loggerFactory">The value of <see cref="loggerFactory"/>.</param>
/// <param name="generalConfigurationOptions">The <see cref="IOptions{TOptions}"/> containing the value of <see cref="generalConfiguration"/>.</param>
/// <param name="loggingConfigurationOptions">The <see cref="IOptions{TOptions}"/> containing the value of <see cref="loggingConfiguration"/>.</param>
public ProviderFactory(
IJobManager jobManager,
IAssemblyInformationProvider assemblyInformationProvider,
IAsyncDelayer asyncDelayer,
ILoggerFactory loggerFactory,
IOptions<GeneralConfiguration> generalConfigurationOptions)
IOptions<GeneralConfiguration> generalConfigurationOptions,
IOptions<FileLoggingConfiguration> 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));
}
/// <inheritdoc />
@@ -73,7 +81,8 @@ namespace Tgstation.Server.Host.Components.Chat.Providers
asyncDelayer,
loggerFactory.CreateLogger<IrcProvider>(),
assemblyInformationProvider,
settings),
settings,
loggingConfiguration),
ChatProvider.Discord => new DiscordProvider(
jobManager,
asyncDelayer,
@@ -29,6 +29,11 @@ namespace Tgstation.Server.Host.Configuration
/// </summary>
public bool Disable { get; set; }
/// <summary>
/// If Chat Providers should log their network traffic. Normally disabled because it is too noisy.
/// </summary>
public bool ProviderNetworkDebug { get; set; }
/// <summary>
/// The minimum <see cref="Microsoft.Extensions.Logging.LogLevel"/> to display in logs.
/// </summary>