From ad81b7a305befc7bf6364ff3dd82492122c4194f Mon Sep 17 00:00:00 2001 From: Marc Denman Date: Sat, 18 Mar 2017 18:30:09 +0000 Subject: [PATCH] Update OcelotLogger to accept name of class OcelotLogger now has a property called "Name" intended to store the name of the type for which the logger has been built for. This is intended to keep the code a little bit cleaner and also allows for a few extention methods for common logging scenarios --- src/Ocelot/Logging/AspDotNetLogger.cs | 21 ++++++++------ src/Ocelot/Logging/AspDotNetLoggerFactory.cs | 2 +- src/Ocelot/Logging/IOcelotLoggerFactory.cs | 5 ++++ src/Ocelot/Logging/OcelotLoggerExtensions.cs | 29 ++++++++++++++++++++ 4 files changed, 47 insertions(+), 10 deletions(-) create mode 100644 src/Ocelot/Logging/OcelotLoggerExtensions.cs diff --git a/src/Ocelot/Logging/AspDotNetLogger.cs b/src/Ocelot/Logging/AspDotNetLogger.cs index c4185c23..9ebaf7fd 100644 --- a/src/Ocelot/Logging/AspDotNetLogger.cs +++ b/src/Ocelot/Logging/AspDotNetLogger.cs @@ -9,8 +9,11 @@ namespace Ocelot.Logging private readonly ILogger _logger; private readonly IRequestScopedDataRepository _scopedDataRepository; - public AspDotNetLogger(ILogger logger, IRequestScopedDataRepository scopedDataRepository) - { + public string Name { get; } + + public AspDotNetLogger(ILogger logger, IRequestScopedDataRepository scopedDataRepository, string typeName) + { + Name = typeName; _logger = logger; _scopedDataRepository = scopedDataRepository; } @@ -34,16 +37,16 @@ namespace Ocelot.Logging _logger.LogError(GetMessageWithOcelotRequestId(message), args); } - private string GetMessageWithOcelotRequestId(string message) - { - var requestId = _scopedDataRepository.Get("RequestId"); - - if (requestId == null || requestId.IsError) + private string GetMessageWithOcelotRequestId(string message) + { + var requestId = _scopedDataRepository.Get("RequestId"); + + if (requestId == null || requestId.IsError) { return $"{message} : OcelotRequestId - not set"; } - return $"{message} : OcelotRequestId - {requestId.Data}"; - } + return $"{message} : OcelotRequestId - {requestId.Data}"; + } } } \ No newline at end of file diff --git a/src/Ocelot/Logging/AspDotNetLoggerFactory.cs b/src/Ocelot/Logging/AspDotNetLoggerFactory.cs index 91435740..298653bc 100644 --- a/src/Ocelot/Logging/AspDotNetLoggerFactory.cs +++ b/src/Ocelot/Logging/AspDotNetLoggerFactory.cs @@ -17,7 +17,7 @@ namespace Ocelot.Logging public IOcelotLogger CreateLogger() { var logger = _loggerFactory.CreateLogger(); - return new AspDotNetLogger(logger, _scopedDataRepository); + return new AspDotNetLogger(logger, _scopedDataRepository, typeof(T).Name); } } } \ No newline at end of file diff --git a/src/Ocelot/Logging/IOcelotLoggerFactory.cs b/src/Ocelot/Logging/IOcelotLoggerFactory.cs index 98326648..88bfdcd9 100644 --- a/src/Ocelot/Logging/IOcelotLoggerFactory.cs +++ b/src/Ocelot/Logging/IOcelotLoggerFactory.cs @@ -15,5 +15,10 @@ namespace Ocelot.Logging void LogDebug(string message, params object[] args); void LogError(string message, Exception exception); void LogError(string message, params object[] args); + + /// + /// The name of the type the logger has been built for. + /// + string Name { get; } } } diff --git a/src/Ocelot/Logging/OcelotLoggerExtensions.cs b/src/Ocelot/Logging/OcelotLoggerExtensions.cs new file mode 100644 index 00000000..05bd4565 --- /dev/null +++ b/src/Ocelot/Logging/OcelotLoggerExtensions.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Ocelot.Logging +{ + public static class OcelotLoggerExtensions + { + public static void TraceMiddlewareEntry(this IOcelotLogger logger) + { + logger.LogTrace($"entered {logger.Name}"); + } + + public static void TraceInvokeNext(this IOcelotLogger logger) + { + logger.LogTrace($"invoking next middleware from {logger.Name}"); + } + + public static void TraceInvokeNextCompleted(this IOcelotLogger logger) + { + logger.LogTrace($"returned to {logger.Name} after next middleware completed"); + } + + public static void TraceMiddlewareCompleted(this IOcelotLogger logger) + { + logger.LogTrace($"completed {logger.Name}"); + } + } +}