From 47299dd1de5f4e39013391b6d86a00a0c6d55938 Mon Sep 17 00:00:00 2001 From: Daan Boerlage Date: Sun, 7 Nov 2021 00:15:15 +0100 Subject: [PATCH] Refactor the ASP Logger to take advantage of new .net6 features --- src/Web/Logging/AspLogProvider.cs | 36 +++++---- src/Web/Logging/AspLogger.cs | 123 +++++++++++++++--------------- 2 files changed, 77 insertions(+), 82 deletions(-) diff --git a/src/Web/Logging/AspLogProvider.cs b/src/Web/Logging/AspLogProvider.cs index 25fdace..9ef3cf8 100644 --- a/src/Web/Logging/AspLogProvider.cs +++ b/src/Web/Logging/AspLogProvider.cs @@ -1,28 +1,26 @@ using System.Collections.Concurrent; using Geekbot.Core.Logger; -using Microsoft.Extensions.Logging; -namespace Geekbot.Web.Logging +namespace Geekbot.Web.Logging; + +public class AspLogProvider : ILoggerProvider { - public class AspLogProvider : ILoggerProvider + private readonly IGeekbotLogger _geekbotLogger; + + private readonly ConcurrentDictionary _loggers = new ConcurrentDictionary(); + + public AspLogProvider(IGeekbotLogger geekbotLogger) { - private readonly IGeekbotLogger _geekbotLogger; - - private readonly ConcurrentDictionary _loggers = new ConcurrentDictionary(); + _geekbotLogger = geekbotLogger; + } - public AspLogProvider(IGeekbotLogger geekbotLogger) - { - _geekbotLogger = geekbotLogger; - } - - public void Dispose() - { - _loggers.Clear(); - } + public void Dispose() + { + _loggers.Clear(); + } - public ILogger CreateLogger(string categoryName) - { - return _loggers.GetOrAdd(categoryName, name => new AspLogger(categoryName, _geekbotLogger)); - } + 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/Logging/AspLogger.cs b/src/Web/Logging/AspLogger.cs index c18a7f3..7feb20c 100644 --- a/src/Web/Logging/AspLogger.cs +++ b/src/Web/Logging/AspLogger.cs @@ -1,71 +1,68 @@ -using System; -using Geekbot.Core.Logger; -using Microsoft.Extensions.Logging; +using Geekbot.Core.Logger; -namespace Geekbot.Web.Logging +namespace Geekbot.Web.Logging; + +public class AspLogger : ILogger { - public class AspLogger : ILogger + private readonly string _categoryName; + private readonly IGeekbotLogger _geekbotLogger; + + public AspLogger(string categoryName, IGeekbotLogger geekbotLogger) { - private readonly string _categoryName; - private readonly IGeekbotLogger _geekbotLogger; - - public AspLogger(string categoryName, IGeekbotLogger geekbotLogger) - { - geekbotLogger.Trace(LogSource.Api, $"Adding {categoryName}"); - _categoryName = categoryName; - _geekbotLogger = geekbotLogger; - } - - public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func formatter) - { - switch (logLevel) - { - case LogLevel.Trace: - _geekbotLogger.Trace(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}"); - break; - case LogLevel.Debug: - _geekbotLogger.Debug(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}"); - break; - case LogLevel.Information: - _geekbotLogger.Information(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}"); - break; - case LogLevel.Warning: - _geekbotLogger.Warning(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}", exception); - break; - case LogLevel.Error: - case LogLevel.Critical: - _geekbotLogger.Error(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}", exception); - break; - case LogLevel.None: - break; - default: - throw new ArgumentOutOfRangeException(nameof(logLevel)); - } - } + geekbotLogger.Trace(LogSource.Api, $"Adding {categoryName}"); + _categoryName = categoryName; + _geekbotLogger = geekbotLogger; + } - public bool IsEnabled(LogLevel logLevel) + public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func formatter) + { + switch (logLevel) { - return !_geekbotLogger.LogAsJson() && _geekbotLogger.GetNLogger().IsEnabled(ToGeekbotLogLevel(logLevel)); - } - - public IDisposable BeginScope(TState state) - { - return null; - } - - private static NLog.LogLevel ToGeekbotLogLevel(LogLevel level) - { - return level switch - { - LogLevel.Trace => NLog.LogLevel.Trace, - LogLevel.Debug => NLog.LogLevel.Debug, - LogLevel.Information => NLog.LogLevel.Info, - LogLevel.Warning => NLog.LogLevel.Warn, - LogLevel.Error => NLog.LogLevel.Error, - LogLevel.Critical => NLog.LogLevel.Fatal, - LogLevel.None => NLog.LogLevel.Off, - _ => throw new ArgumentOutOfRangeException(nameof(level)) - }; + case LogLevel.Trace: + _geekbotLogger.Trace(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}"); + break; + case LogLevel.Debug: + _geekbotLogger.Debug(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}"); + break; + case LogLevel.Information: + _geekbotLogger.Information(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}"); + break; + case LogLevel.Warning: + _geekbotLogger.Warning(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}", exception); + break; + case LogLevel.Error: + case LogLevel.Critical: + _geekbotLogger.Error(LogSource.Api, $"{eventId.Id} - {_categoryName} - {state}", exception); + break; + case LogLevel.None: + break; + default: + throw new ArgumentOutOfRangeException(nameof(logLevel)); } } + + public bool IsEnabled(LogLevel logLevel) + { + return !_geekbotLogger.LogAsJson() && _geekbotLogger.GetNLogger().IsEnabled(ToGeekbotLogLevel(logLevel)); + } + + public IDisposable BeginScope(TState state) + { + return null; + } + + private static NLog.LogLevel ToGeekbotLogLevel(LogLevel level) + { + return level switch + { + LogLevel.Trace => NLog.LogLevel.Trace, + LogLevel.Debug => NLog.LogLevel.Debug, + LogLevel.Information => NLog.LogLevel.Info, + LogLevel.Warning => NLog.LogLevel.Warn, + LogLevel.Error => NLog.LogLevel.Error, + LogLevel.Critical => NLog.LogLevel.Fatal, + LogLevel.None => NLog.LogLevel.Off, + _ => throw new ArgumentOutOfRangeException(nameof(level)) + }; + } } \ No newline at end of file