Skip to content

Commit 57dfad1

Browse files
authored
fix: stop logging "null" when exceptions are not present in trace events (#790)
1 parent a639523 commit 57dfad1

File tree

3 files changed

+31
-21
lines changed

3 files changed

+31
-21
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"id": "1e1425f8-c911-4d42-a54f-f2330e5cbfff",
3+
"type": "bugfix",
4+
"description": "Stop logging \"null\" when exceptions are not present in trace events"
5+
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,4 @@ kotlinLoggingVersion=3.0.0
4444
slf4jVersion=2.0.6
4545

4646
# crt
47-
crtKotlinVersion=0.6.7
47+
crtKotlinVersion=0.6.7

runtime/tracing/tracing-core/common/src/aws/smithy/kotlin/runtime/tracing/LoggingTraceProbe.kt

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,41 @@ package aws.smithy.kotlin.runtime.tracing
77
import mu.KLogger
88
import 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
*/
1434
public 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

Comments
 (0)