@@ -42,6 +42,7 @@ import org.eclipse.lsp4j.WorkspaceClientCapabilities
4242import org.eclipse.lsp4j.jsonrpc.Launcher
4343import org.eclipse.lsp4j.jsonrpc.Launcher.Builder
4444import org.eclipse.lsp4j.jsonrpc.MessageConsumer
45+ import org.eclipse.lsp4j.jsonrpc.messages.Message
4546import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage
4647import org.slf4j.event.Level
4748import software.aws.toolkits.core.utils.getLogger
@@ -275,15 +276,18 @@ private class AmazonQServerInstance(private val project: Project, private val cs
275276 launcherHandler.startNotify()
276277
277278 class AmazonQServerBuilder : Builder <AmazonQLanguageServer >() {
279+ private val customMessageTracer = MessageTracer ()
278280
279281 override fun wrapMessageConsumer (consumer : MessageConsumer ? ): MessageConsumer =
280282 super .wrapMessageConsumer { message ->
283+ customMessageTracer.trace(" INCOMING" , message)
281284 if (message is ResponseMessage && message.result is AwsExtendedInitializeResult ) {
282285 val result = message.result as AwsExtendedInitializeResult
283286 AwsServerCapabilitiesProvider .getInstance(project).setAwsServerCapabilities(result.getAwsServerCapabilities())
284287 AmazonQLspService .getInstance(project).notifyServerStarted()
285288 }
286289 consumer?.consume(message)
290+ customMessageTracer.trace(" PROCESSED" , message)
287291 }
288292 }
289293
@@ -371,6 +375,18 @@ private class AmazonQServerInstance(private val project: Project, private val cs
371375 }
372376 }
373377
378+ class MessageTracer {
379+ private val traceLogger = LOG .atLevel(if (isDeveloperMode()) Level .INFO else Level .DEBUG )
380+
381+ fun trace (direction : String , message : Message ) {
382+ traceLogger.log {
383+ buildString {
384+ append(" $direction : " )
385+ append(message.toString())
386+ }
387+ }
388+ }
389+ }
374390 companion object {
375391 private val LOG = getLogger<AmazonQServerInstance >()
376392 }
0 commit comments