diff --git a/eng/PatchConfig.props b/eng/PatchConfig.props index 29e74d4f858b207d5b449839823caa14c2408603..9afa0e2572f5b5a751ae8156ab4b379635fa3dd3 100644 --- a/eng/PatchConfig.props +++ b/eng/PatchConfig.props @@ -28,6 +28,8 @@ Later on, this will be checked using this condition: </PropertyGroup> <PropertyGroup Condition=" '$(VersionPrefix)' == '2.1.11' "> <PackagesInPatch> + Microsoft.AspNetCore.Mvc.Core; + Microsoft.AspNetCore.Mvc.RazorPages; </PackagesInPatch> </PropertyGroup> diff --git a/src/Mvc/Mvc.Core/src/Internal/MvcCoreLoggerExtensions.cs b/src/Mvc/Mvc.Core/src/Internal/MvcCoreLoggerExtensions.cs index c840f785b10b3b6e97a6898764acedebbb175d6f..7ce747f03fc0ee26c142aa50e82ac7e4d58c2365 100644 --- a/src/Mvc/Mvc.Core/src/Internal/MvcCoreLoggerExtensions.cs +++ b/src/Mvc/Mvc.Core/src/Internal/MvcCoreLoggerExtensions.cs @@ -32,6 +32,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal private static readonly double TimestampToTicks = TimeSpan.TicksPerSecond / (double)Stopwatch.Frequency; private static readonly Action<ILogger, string, string, Exception> _actionExecuting; + private static readonly Action<ILogger, string, MethodInfo, string, string, Exception> _controllerActionExecuting; private static readonly Action<ILogger, string, double, Exception> _actionExecuted; private static readonly Action<ILogger, string[], Exception> _challengeResultExecuting; @@ -39,7 +40,7 @@ namespace Microsoft.AspNetCore.Mvc.Internal private static readonly Action<ILogger, string, Exception> _contentResultExecuting; private static readonly Action<ILogger, string, ModelValidationState, Exception> _actionMethodExecuting; - private static readonly Action<ILogger, string, string[], ModelValidationState, Exception> _actionMethodExecutingWithArguments; + private static readonly Action<ILogger, string, string[], Exception> _actionMethodExecutingWithArguments; private static readonly Action<ILogger, string, string, double, Exception> _actionMethodExecuted; private static readonly Action<ILogger, string, string[], Exception> _logFilterExecutionPlan; @@ -153,6 +154,11 @@ namespace Microsoft.AspNetCore.Mvc.Internal 1, "Route matched with {RouteData}. Executing action {ActionName}"); + _controllerActionExecuting = LoggerMessage.Define<string, MethodInfo, string, string>( + LogLevel.Information, + 3, + "Route matched with {RouteData}. Executing controller action with signature {MethodInfo} on controller {Controller} ({AssemblyName})."); + _actionExecuted = LoggerMessage.Define<string, double>( LogLevel.Information, 2, @@ -173,10 +179,10 @@ namespace Microsoft.AspNetCore.Mvc.Internal 1, "Executing action method {ActionName} - Validation state: {ValidationState}"); - _actionMethodExecutingWithArguments = LoggerMessage.Define<string, string[], ModelValidationState>( - LogLevel.Information, - 1, - "Executing action method {ActionName} with arguments ({Arguments}) - Validation state: {ValidationState}"); + _actionMethodExecutingWithArguments = LoggerMessage.Define<string, string[]>( + LogLevel.Trace, + 3, + "Executing action method {ActionName} with arguments ({Arguments})"); _actionMethodExecuted = LoggerMessage.Define<string, string, double>( LogLevel.Information, @@ -683,7 +689,22 @@ namespace Microsoft.AspNetCore.Mvc.Internal } } - _actionExecuting(logger, stringBuilder.ToString(), action.DisplayName, null); + if (action is ControllerActionDescriptor controllerActionDescriptor) + { + var controllerType = controllerActionDescriptor.ControllerTypeInfo.AsType(); + var controllerName = TypeNameHelper.GetTypeDisplayName(controllerType); + _controllerActionExecuting( + logger, + stringBuilder.ToString(), + controllerActionDescriptor.MethodInfo, + controllerName, + controllerType.Assembly.GetName().Name, + null); + } + else + { + _actionExecuting(logger, stringBuilder.ToString(), action.DisplayName, null); + } } } @@ -814,21 +835,17 @@ namespace Microsoft.AspNetCore.Mvc.Internal var actionName = context.ActionDescriptor.DisplayName; var validationState = context.ModelState.ValidationState; + _actionMethodExecuting(logger, actionName, validationState, null); - string[] convertedArguments; - if (arguments == null) - { - _actionMethodExecuting(logger, actionName, validationState, null); - } - else + if (arguments != null && logger.IsEnabled(LogLevel.Trace)) { - convertedArguments = new string[arguments.Length]; + var convertedArguments = new string[arguments.Length]; for (var i = 0; i < arguments.Length; i++) { convertedArguments[i] = Convert.ToString(arguments[i]); } - _actionMethodExecutingWithArguments(logger, actionName, convertedArguments, validationState, null); + _actionMethodExecutingWithArguments(logger, actionName, convertedArguments, null); } } } diff --git a/src/Mvc/Mvc.RazorPages/src/Internal/PageLoggerExtensions.cs b/src/Mvc/Mvc.RazorPages/src/Internal/PageLoggerExtensions.cs index a5d7c960d48c6fe328ebb5c3b76303d1819e834b..fcca656b9d48cbd4bc9542c4bffc1da3bb05a5e0 100644 --- a/src/Mvc/Mvc.RazorPages/src/Internal/PageLoggerExtensions.cs +++ b/src/Mvc/Mvc.RazorPages/src/Internal/PageLoggerExtensions.cs @@ -15,7 +15,8 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal { public const string PageFilter = "Page Filter"; - private static readonly Action<ILogger, string, string[], ModelValidationState, Exception> _handlerMethodExecuting; + private static readonly Action<ILogger, string, ModelValidationState, Exception> _handlerMethodExecuting; + private static readonly Action<ILogger, string, string[], Exception> _handlerMethodExecutingWithArguments; private static readonly Action<ILogger, string, string, Exception> _handlerMethodExecuted; private static readonly Action<ILogger, object, Exception> _pageFilterShortCircuit; private static readonly Action<ILogger, string, string[], Exception> _malformedPageDirective; @@ -28,10 +29,15 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal { // These numbers start at 101 intentionally to avoid conflict with the IDs used by ResourceInvoker. - _handlerMethodExecuting = LoggerMessage.Define<string, string[], ModelValidationState>( + _handlerMethodExecuting = LoggerMessage.Define<string, ModelValidationState>( LogLevel.Information, 101, - "Executing handler method {HandlerName} with arguments ({Arguments}) - ModelState is {ValidationState}"); + "Executing handler method {HandlerName} - ModelState is {ValidationState}"); + + _handlerMethodExecutingWithArguments = LoggerMessage.Define<string, string[]>( + LogLevel.Trace, + 103, + "Executing handler method {HandlerName} with arguments ({Arguments})"); _handlerMethodExecuted = LoggerMessage.Define<string, string>( LogLevel.Debug, @@ -75,23 +81,19 @@ namespace Microsoft.AspNetCore.Mvc.RazorPages.Internal { var handlerName = handler.MethodInfo.Name; - string[] convertedArguments; - if (arguments == null) - { - convertedArguments = null; - } - else + var validationState = context.ModelState.ValidationState; + _handlerMethodExecuting(logger, handlerName, validationState, null); + + if (arguments != null && logger.IsEnabled(LogLevel.Trace)) { - convertedArguments = new string[arguments.Length]; + var convertedArguments = new string[arguments.Length]; for (var i = 0; i < arguments.Length; i++) { convertedArguments[i] = Convert.ToString(arguments[i]); } - } - var validationState = context.ModelState.ValidationState; - - _handlerMethodExecuting(logger, handlerName, convertedArguments, validationState, null); + _handlerMethodExecutingWithArguments(logger, handlerName, convertedArguments, null); + } } }