@@ -7,36 +7,41 @@ package aws.smithy.kotlin.runtime.tracing
77import mu.KLogger
88import mu.KotlinLogging
99
10+ private fun EventLevel.loggerMethod (): (KLogger , () -> Any? ) -> Unit = when (this ) {
11+ EventLevel .Fatal ,
12+ EventLevel .Error ,
13+ -> KLogger ::error
14+ EventLevel .Warning -> KLogger ::warn
15+ EventLevel .Info -> KLogger ::info
16+ EventLevel .Debug -> KLogger ::debug
17+ EventLevel .Trace -> KLogger ::trace
18+ }
19+
20+ private fun EventLevel.throwableLoggerMethod (): (KLogger , Throwable , () -> Any? ) -> Unit = when (this ) {
21+ EventLevel .Fatal ,
22+ EventLevel .Error ,
23+ -> KLogger ::error
24+ EventLevel .Warning -> KLogger ::warn
25+ EventLevel .Info -> KLogger ::info
26+ EventLevel .Debug -> KLogger ::debug
27+ EventLevel .Trace -> KLogger ::trace
28+ }
29+
1030/* *
1131 * A [TraceProbe] that sends logs events to downstream logging libraries (e.g., Slf4j on JVM). Those downstream
1232 * libraries may require configuration before messages will actually appear in logs.
1333 */
1434public object LoggingTraceProbe : TraceProbe {
15- private fun EventLevel.loggerMethod (): (KLogger , () -> Any? ) -> Unit = when (this ) {
16- EventLevel .Fatal ,
17- EventLevel .Error ,
18- -> KLogger ::error
19- EventLevel .Warning -> KLogger ::warn
20- EventLevel .Info -> KLogger ::info
21- EventLevel .Debug -> KLogger ::debug
22- EventLevel .Trace -> KLogger ::trace
23- }
24-
25- private fun log (spanId : String , event : TraceEvent ) {
35+ private fun log (spanId : String , event : TraceEvent , message : TraceEventData .Message ) {
2636 val logger = KotlinLogging .logger(event.sourceComponent)
27- val method = event.level.loggerMethod()
28- method(logger) {
29- val message = event.data as TraceEventData .Message
30-
31- val content = message.content()
32- val exception = message.exception?.let { " : $it " } ? : " "
33-
34- " $spanId : $content$exception "
37+ when (message.exception) {
38+ null -> event.level.loggerMethod()(logger) { " $spanId : ${message.content()} " }
39+ else -> event.level.throwableLoggerMethod()(logger, message.exception) { " $spanId : ${message.content()} " }
3540 }
3641 }
3742
3843 override fun postEvent (span : TraceSpan , event : TraceEvent ) {
39- if (event.data is TraceEventData .Message ) log(span.hierarchicalId, event)
44+ if (event.data is TraceEventData .Message ) log(span.hierarchicalId, event, event.data )
4045 }
4146
4247 override fun spanClosed (span : TraceSpan ) { } // No action necessary
0 commit comments