public void ActionMethodInvocationExceptionLogEntry() { var server = new TestServerBuilder() .AddGraphType <LogTestController>() .Build(); var graphMethod = TemplateHelper.CreateActionMethodTemplate <LogTestController>(nameof(LogTestController.ExecuteField2)) as IGraphMethod; var package = server.CreateFieldContextBuilder <LogTestController>(nameof(LogTestController.ExecuteField2)); var fieldRequest = package.FieldRequest; var result = new object(); var inner = new Exception("inner error"); var exception = new TargetInvocationException("invocation error message", inner); var entry = new ActionMethodInvocationExceptionLogEntry(graphMethod, fieldRequest, exception); Assert.AreEqual(LogEventIds.ControllerInvocationException.Id, entry.EventId); Assert.AreEqual(fieldRequest.Id, entry.PipelineRequestId); Assert.AreEqual(graphMethod.Parent.InternalFullName, entry.ControllerTypeName); Assert.AreEqual(graphMethod.Name, entry.ActionName); Assert.IsNotNull(entry.ToString()); var exceptionEntry = entry.Exception as ExceptionLogItem; Assert.IsNotNull(exceptionEntry); Assert.AreEqual(exception.Message, exceptionEntry.ExceptionMessage); Assert.AreEqual(exception.StackTrace, exceptionEntry.StackTrace); Assert.AreEqual(exception.GetType().FriendlyName(true), exceptionEntry.TypeName); }
/// <inheritdoc /> public virtual void ActionMethodInvocationException(IGraphMethod action, IDataRequest request, Exception exception) { if (!this.IsEnabled(LogLevel.Error)) { return; } var entry = new ActionMethodInvocationExceptionLogEntry(action, request, exception); this.LogEvent(LogLevel.Error, entry); }