Skip to content

Commit 9d9d8af

Browse files
Copilotstephentoub
andcommitted
Guard Trace logging calls with IsEnabled check
Wrap logging calls with Logger.IsEnabled(LogLevel.Trace) to avoid expensive JSON serialization when trace logging is not enabled. Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
1 parent cc7e97c commit 9d9d8af

4 files changed

Lines changed: 16 additions & 4 deletions

File tree

src/ModelContextProtocol.Core/Client/SseClientSessionTransport.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,10 @@ public override async Task SendMessageAsync(
8080
messageId = messageWithId.Id.ToString();
8181
}
8282

83-
LogTransportSendingMessageSensitive(Name, JsonSerializer.Serialize(message, McpJsonUtilities.JsonContext.Default.JsonRpcMessage));
83+
if (_logger.IsEnabled(LogLevel.Trace))
84+
{
85+
LogTransportSendingMessageSensitive(Name, JsonSerializer.Serialize(message, McpJsonUtilities.JsonContext.Default.JsonRpcMessage));
86+
}
8487

8588
using var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, _messageEndpoint);
8689
StreamableHttpClientSessionTransport.CopyAdditionalHeaders(httpRequestMessage.Headers, _options.AdditionalHeaders, sessionId: null, protocolVersion: null);

src/ModelContextProtocol.Core/Client/StreamClientSessionTransport.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,10 @@ public override async Task SendMessageAsync(JsonRpcMessage message, Cancellation
105105

106106
var json = JsonSerializer.Serialize(message, McpJsonUtilities.JsonContext.Default.JsonRpcMessage);
107107

108-
LogTransportSendingMessageSensitive(Name, json);
108+
if (Logger.IsEnabled(LogLevel.Trace))
109+
{
110+
LogTransportSendingMessageSensitive(Name, json);
111+
}
109112

110113
using var _ = await _sendLock.LockAsync(cancellationToken).ConfigureAwait(false);
111114
try

src/ModelContextProtocol.Core/Client/StreamableHttpClientSessionTransport.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,10 @@ internal async Task<HttpResponseMessage> SendHttpRequestAsync(JsonRpcMessage mes
7575
$"Call {nameof(McpClient)}.{nameof(McpClient.ResumeSessionAsync)} to resume existing sessions.");
7676
}
7777

78-
LogTransportSendingMessageSensitive(Name, JsonSerializer.Serialize(message, McpJsonUtilities.JsonContext.Default.JsonRpcMessage));
78+
if (_logger.IsEnabled(LogLevel.Trace))
79+
{
80+
LogTransportSendingMessageSensitive(Name, JsonSerializer.Serialize(message, McpJsonUtilities.JsonContext.Default.JsonRpcMessage));
81+
}
7982

8083
using var sendCts = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, _connectionCts.Token);
8184
cancellationToken = sendCts.Token;

src/ModelContextProtocol.Core/Server/StreamServerTransport.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,10 @@ public override async Task SendMessageAsync(JsonRpcMessage message, Cancellation
7575
try
7676
{
7777
var json = JsonSerializer.Serialize(message, McpJsonUtilities.JsonContext.Default.JsonRpcMessage);
78-
LogTransportSendingMessageSensitive(Name, json);
78+
if (Logger.IsEnabled(LogLevel.Trace))
79+
{
80+
LogTransportSendingMessageSensitive(Name, json);
81+
}
7982
await _outputStream.WriteAsync(Encoding.UTF8.GetBytes(json), cancellationToken).ConfigureAwait(false);
8083
await _outputStream.WriteAsync(s_newlineBytes, cancellationToken).ConfigureAwait(false);
8184
await _outputStream.FlushAsync(cancellationToken).ConfigureAwait(false);

0 commit comments

Comments
 (0)