@@ -42,6 +42,7 @@ import org.eclipse.lsp4j.WorkspaceClientCapabilities
42
42
import org.eclipse.lsp4j.jsonrpc.Launcher
43
43
import org.eclipse.lsp4j.jsonrpc.Launcher.Builder
44
44
import org.eclipse.lsp4j.jsonrpc.MessageConsumer
45
+ import org.eclipse.lsp4j.jsonrpc.messages.Message
45
46
import org.eclipse.lsp4j.jsonrpc.messages.ResponseMessage
46
47
import org.slf4j.event.Level
47
48
import software.aws.toolkits.core.utils.getLogger
@@ -275,15 +276,18 @@ private class AmazonQServerInstance(private val project: Project, private val cs
275
276
launcherHandler.startNotify()
276
277
277
278
class AmazonQServerBuilder : Builder <AmazonQLanguageServer >() {
279
+ private val customMessageTracer = MessageTracer ()
278
280
279
281
override fun wrapMessageConsumer (consumer : MessageConsumer ? ): MessageConsumer =
280
282
super .wrapMessageConsumer { message ->
283
+ customMessageTracer.trace(" INCOMING" , message)
281
284
if (message is ResponseMessage && message.result is AwsExtendedInitializeResult ) {
282
285
val result = message.result as AwsExtendedInitializeResult
283
286
AwsServerCapabilitiesProvider .getInstance(project).setAwsServerCapabilities(result.getAwsServerCapabilities())
284
287
AmazonQLspService .getInstance(project).notifyServerStarted()
285
288
}
286
289
consumer?.consume(message)
290
+ customMessageTracer.trace(" PROCESSED" , message)
287
291
}
288
292
}
289
293
@@ -371,6 +375,18 @@ private class AmazonQServerInstance(private val project: Project, private val cs
371
375
}
372
376
}
373
377
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
+ }
374
390
companion object {
375
391
private val LOG = getLogger<AmazonQServerInstance >()
376
392
}
0 commit comments