@@ -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,18 @@ 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+ long requestStartingTimestamp = Stopwatch . GetTimestamp ( ) ;
284+ try
285+ {
286+ var result = await HandleRequest ( request , cancellationToken ) . ConfigureAwait ( false ) ;
287+ LogRequestHandlerCompleted ( EndpointName , request . Method , GetElapsed ( requestStartingTimestamp ) . TotalMilliseconds ) ;
288+ AddResponseTags ( ref tags , activity , result , method ) ;
289+ }
290+ catch ( Exception ex )
291+ {
292+ LogRequestHandlerException ( EndpointName , request . Method , GetElapsed ( requestStartingTimestamp ) . TotalMilliseconds , ex ) ;
293+ throw ;
294+ }
287295 break ;
288296
289297 case JsonRpcNotification notification :
@@ -355,9 +363,7 @@ private void HandleMessageWithId(JsonRpcMessage message, JsonRpcMessageWithId me
355363 }
356364
357365 LogRequestHandlerCalled ( EndpointName , request . Method ) ;
358- long startingTimestamp = Stopwatch . GetTimestamp ( ) ;
359366 JsonNode ? result = await handler ( request , cancellationToken ) . ConfigureAwait ( false ) ;
360- LogRequestHandlerCompleted ( EndpointName , request . Method , GetElapsed ( startingTimestamp ) . TotalMilliseconds ) ;
361367
362368 await SendMessageAsync ( new JsonRpcResponse
363369 {
@@ -886,8 +892,8 @@ private static McpProtocolException CreateRemoteProtocolException(JsonRpcError e
886892 [ LoggerMessage ( Level = LogLevel . Information , Message = "{EndpointName} method '{Method}' request handler completed in {ElapsedMilliseconds}ms." ) ]
887893 private partial void LogRequestHandlerCompleted ( string endpointName , string method , double elapsedMilliseconds ) ;
888894
889- [ LoggerMessage ( Level = LogLevel . Warning , Message = "{EndpointName} method '{Method}' request handler failed." ) ]
890- 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 ) ;
891897
892898 [ LoggerMessage ( Level = LogLevel . Information , Message = "{EndpointName} received request for unknown request ID '{RequestId}'." ) ]
893899 private partial void LogNoRequestFoundForMessageWithId ( string endpointName , RequestId requestId ) ;
0 commit comments