From dc800d144d5e400f387372c7addd368587b907c9 Mon Sep 17 00:00:00 2001 From: Daan Boerlage Date: Tue, 26 Jul 2022 02:01:44 +0200 Subject: [PATCH] Move the asp logger to core and and make it a generic ilogger adapter --- src/Bot/BotStartup.cs | 1 + .../Logger/{ => Adapters}/DiscordLogger.cs | 2 +- .../Logger/Adapters/ILoggerAdapter.cs} | 26 ++++++++------- .../Adapters/ILoggerProviderProvider.cs | 33 +++++++++++++++++++ src/Web/Logging/AspLogProvider.cs | 26 --------------- src/Web/WebApiStartup.cs | 4 +-- 6 files changed, 51 insertions(+), 41 deletions(-) rename src/Core/Logger/{ => Adapters}/DiscordLogger.cs (94%) rename src/{Web/Logging/AspLogger.cs => Core/Logger/Adapters/ILoggerAdapter.cs} (59%) create mode 100644 src/Core/Logger/Adapters/ILoggerProviderProvider.cs delete mode 100644 src/Web/Logging/AspLogProvider.cs diff --git a/src/Bot/BotStartup.cs b/src/Bot/BotStartup.cs index bc3ef49..afb1a8a 100644 --- a/src/Bot/BotStartup.cs +++ b/src/Bot/BotStartup.cs @@ -8,6 +8,7 @@ using Geekbot.Core.Database; using Geekbot.Core.GlobalSettings; using Geekbot.Core.GuildSettingsManager; using Geekbot.Core.Logger; +using Geekbot.Core.Logger.Adapters; using Geekbot.Core.ReactionListener; using Geekbot.Core.UserRepository; using Microsoft.Extensions.DependencyInjection; diff --git a/src/Core/Logger/DiscordLogger.cs b/src/Core/Logger/Adapters/DiscordLogger.cs similarity index 94% rename from src/Core/Logger/DiscordLogger.cs rename to src/Core/Logger/Adapters/DiscordLogger.cs index f6fb95a..e9bb02e 100644 --- a/src/Core/Logger/DiscordLogger.cs +++ b/src/Core/Logger/Adapters/DiscordLogger.cs @@ -2,7 +2,7 @@ using System.Threading.Tasks; using Discord; -namespace Geekbot.Core.Logger +namespace Geekbot.Core.Logger.Adapters { public class DiscordLogger : IDiscordLogger { diff --git a/src/Web/Logging/AspLogger.cs b/src/Core/Logger/Adapters/ILoggerAdapter.cs similarity index 59% rename from src/Web/Logging/AspLogger.cs rename to src/Core/Logger/Adapters/ILoggerAdapter.cs index 7feb20c..90e7bf3 100644 --- a/src/Web/Logging/AspLogger.cs +++ b/src/Core/Logger/Adapters/ILoggerAdapter.cs @@ -1,16 +1,17 @@ -using Geekbot.Core.Logger; +using System; +using Microsoft.Extensions.Logging; -namespace Geekbot.Web.Logging; +namespace Geekbot.Core.Logger.Adapters; -public class AspLogger : ILogger +public class ILoggerAdapter : ILogger { private readonly string _categoryName; + private readonly LogSource _logSource; private readonly IGeekbotLogger _geekbotLogger; - - public AspLogger(string categoryName, IGeekbotLogger geekbotLogger) + public ILoggerAdapter(string categoryName, LogSource logSource, IGeekbotLogger geekbotLogger) { - geekbotLogger.Trace(LogSource.Api, $"Adding {categoryName}"); _categoryName = categoryName; + _logSource = logSource; _geekbotLogger = geekbotLogger; } @@ -19,20 +20,20 @@ public class AspLogger : ILogger switch (logLevel) { case LogLevel.Trace: - _geekbotLogger.Trace(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}"); + _geekbotLogger.Trace(_logSource, $"{eventId.Id} - {_categoryName} - {state}"); break; case LogLevel.Debug: - _geekbotLogger.Debug(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}"); + _geekbotLogger.Debug(_logSource, $"{eventId.Id} - {_categoryName} - {state}"); break; case LogLevel.Information: - _geekbotLogger.Information(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}"); + _geekbotLogger.Information(_logSource, $"{eventId.Id} - {_categoryName} - {state}"); break; case LogLevel.Warning: - _geekbotLogger.Warning(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}", exception); + _geekbotLogger.Warning(_logSource, $"{eventId.Id} - {_categoryName} - {state}", exception); break; case LogLevel.Error: case LogLevel.Critical: - _geekbotLogger.Error(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}", exception); + _geekbotLogger.Error(_logSource, $"{eventId.Id} - {_categoryName} - {state}", exception); break; case LogLevel.None: break; @@ -43,7 +44,8 @@ public class AspLogger : ILogger public bool IsEnabled(LogLevel logLevel) { - return !_geekbotLogger.LogAsJson() && _geekbotLogger.GetNLogger().IsEnabled(ToGeekbotLogLevel(logLevel)); + return _geekbotLogger.GetNLogger().IsEnabled(ToGeekbotLogLevel(logLevel)); + // return !_geekbotLogger.LogAsJson() && _geekbotLogger.GetNLogger().IsEnabled(ToGeekbotLogLevel(logLevel)); } public IDisposable BeginScope(TState state) diff --git a/src/Core/Logger/Adapters/ILoggerProviderProvider.cs b/src/Core/Logger/Adapters/ILoggerProviderProvider.cs new file mode 100644 index 0000000..bc31a24 --- /dev/null +++ b/src/Core/Logger/Adapters/ILoggerProviderProvider.cs @@ -0,0 +1,33 @@ +using System.Collections.Concurrent; +using Microsoft.Extensions.Logging; + +namespace Geekbot.Core.Logger.Adapters; + +public class ILoggerProviderProvider : ILoggerProvider, ILoggerFactory +{ + private readonly IGeekbotLogger _geekbotLogger; + private readonly LogSource _logSource; + + private readonly ConcurrentDictionary _loggers = new(); + + public ILoggerProviderProvider(IGeekbotLogger geekbotLogger, LogSource logSource) + { + _geekbotLogger = geekbotLogger; + _logSource = logSource; + } + + public void Dispose() + { + _loggers.Clear(); + } + + public ILogger CreateLogger(string categoryName) + { + return _loggers.GetOrAdd(categoryName, name => new ILoggerAdapter(categoryName, _logSource, _geekbotLogger)); + } + + public void AddProvider(ILoggerProvider provider) + { + throw new System.NotImplementedException(); + } +} \ No newline at end of file diff --git a/src/Web/Logging/AspLogProvider.cs b/src/Web/Logging/AspLogProvider.cs deleted file mode 100644 index 9ef3cf8..0000000 --- a/src/Web/Logging/AspLogProvider.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Collections.Concurrent; -using Geekbot.Core.Logger; - -namespace Geekbot.Web.Logging; - -public class AspLogProvider : ILoggerProvider -{ - private readonly IGeekbotLogger _geekbotLogger; - - private readonly ConcurrentDictionary _loggers = new ConcurrentDictionary(); - - public AspLogProvider(IGeekbotLogger geekbotLogger) - { - _geekbotLogger = geekbotLogger; - } - - public void Dispose() - { - _loggers.Clear(); - } - - public ILogger CreateLogger(string categoryName) - { - return _loggers.GetOrAdd(categoryName, name => new AspLogger(categoryName, _geekbotLogger)); - } -} \ No newline at end of file diff --git a/src/Web/WebApiStartup.cs b/src/Web/WebApiStartup.cs index 40cd673..c6533c2 100644 --- a/src/Web/WebApiStartup.cs +++ b/src/Web/WebApiStartup.cs @@ -7,9 +7,9 @@ using Geekbot.Core.GlobalSettings; using Geekbot.Core.GuildSettingsManager; using Geekbot.Core.Highscores; using Geekbot.Core.Logger; +using Geekbot.Core.Logger.Adapters; using Geekbot.Core.UserRepository; using Geekbot.Interactions; -using Geekbot.Web.Logging; namespace Geekbot.Web; @@ -40,7 +40,7 @@ public static class WebApiStartup builder.Logging.ClearProviders(); builder.Logging.SetMinimumLevel(LogLevel.Debug); - builder.Logging.AddProvider(new AspLogProvider(logger)); + builder.Logging.AddProvider(new ILoggerProviderProvider(logger, LogSource.Api)); var app = builder.Build(); app.UseCors(cors => cors.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod().Build());