@@ -179,8 +179,6 @@ ex is OperationCanceledException &&
179179
180180 if ( ! isUserCancellation && message is JsonRpcRequest request )
181181 {
182- LogRequestHandlerException ( EndpointName , request . Method , ex ) ;
183-
184182 JsonRpcErrorDetail detail = ex switch
185183 {
186184 UrlElicitationRequiredException urlException => new ( )
@@ -282,8 +280,19 @@ private async Task HandleMessageAsync(JsonRpcMessage message, CancellationToken
282280 switch ( message )
283281 {
284282 case JsonRpcRequest request :
285- var result = await HandleRequest ( request , cancellationToken ) . ConfigureAwait ( false ) ;
286- AddResponseTags ( ref tags , activity , result , method ) ;
283+ LogRequestHandlerCalled ( EndpointName , request . Method ) ;
284+ long requestStartingTimestamp = Stopwatch . GetTimestamp ( ) ;
285+ try
286+ {
287+ var result = await HandleRequest ( request , cancellationToken ) . ConfigureAwait ( false ) ;
288+ LogRequestHandlerCompleted ( EndpointName , request . Method , GetElapsed ( requestStartingTimestamp ) . TotalMilliseconds ) ;
289+ AddResponseTags ( ref tags , activity , result , method ) ;
290+ }
291+ catch ( Exception ex )
292+ {
293+ LogRequestHandlerException ( EndpointName , request . Method , GetElapsed ( requestStartingTimestamp ) . TotalMilliseconds , ex ) ;
294+ throw ;
295+ }
287296 break ;
288297
289298 case JsonRpcNotification notification :
@@ -354,9 +363,7 @@ private void HandleMessageWithId(JsonRpcMessage message, JsonRpcMessageWithId me
354363 throw new McpProtocolException ( $ "Method '{ request . Method } ' is not available.", McpErrorCode . MethodNotFound ) ;
355364 }
356365
357- LogRequestHandlerCalled ( EndpointName , request . Method ) ;
358366 JsonNode ? result = await handler ( request , cancellationToken ) . ConfigureAwait ( false ) ;
359- LogRequestHandlerCompleted ( EndpointName , request . Method ) ;
360367
361368 await SendMessageAsync ( new JsonRpcResponse
362369 {
@@ -882,11 +889,11 @@ private static McpProtocolException CreateRemoteProtocolException(JsonRpcError e
882889 [ LoggerMessage ( Level = LogLevel . Information , Message = "{EndpointName} method '{Method}' request handler called." ) ]
883890 private partial void LogRequestHandlerCalled ( string endpointName , string method ) ;
884891
885- [ LoggerMessage ( Level = LogLevel . Information , Message = "{EndpointName} method '{Method}' request handler completed." ) ]
886- private partial void LogRequestHandlerCompleted ( string endpointName , string method ) ;
892+ [ LoggerMessage ( Level = LogLevel . Information , Message = "{EndpointName} method '{Method}' request handler completed in {ElapsedMilliseconds}ms ." ) ]
893+ private partial void LogRequestHandlerCompleted ( string endpointName , string method , double elapsedMilliseconds ) ;
887894
888- [ LoggerMessage ( Level = LogLevel . Warning , Message = "{EndpointName} method '{Method}' request handler failed." ) ]
889- private partial void LogRequestHandlerException ( string endpointName , string method , Exception exception ) ;
895+ [ LoggerMessage ( Level = LogLevel . Warning , Message = "{EndpointName} method '{Method}' request handler failed in {ElapsedMilliseconds}ms ." ) ]
896+ private partial void LogRequestHandlerException ( string endpointName , string method , double elapsedMilliseconds , Exception exception ) ;
890897
891898 [ LoggerMessage ( Level = LogLevel . Information , Message = "{EndpointName} received request for unknown request ID '{RequestId}'." ) ]
892899 private partial void LogNoRequestFoundForMessageWithId ( string endpointName , RequestId requestId ) ;
0 commit comments