File tree Expand file tree Collapse file tree 4 files changed +17
-4
lines changed
lambda-runtime/src/commonMain/kotlin/io/github/trueangle/knative/lambda/runtime Expand file tree Collapse file tree 4 files changed +17
-4
lines changed Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ package io.github.trueangle.knative.lambda.runtime
33import io.github.trueangle.knative.lambda.runtime.LambdaEnvironmentException.NonRecoverableStateException
44import io.github.trueangle.knative.lambda.runtime.api.Context
55import io.github.trueangle.knative.lambda.runtime.api.LambdaClient
6+ import io.github.trueangle.knative.lambda.runtime.api.dto.LogMessageDto
67import io.github.trueangle.knative.lambda.runtime.handler.LambdaBufferedHandler
78import io.github.trueangle.knative.lambda.runtime.handler.LambdaHandler
89import io.github.trueangle.knative.lambda.runtime.handler.LambdaStreamHandler
@@ -23,6 +24,7 @@ import io.ktor.utils.io.ByteWriteChannel
2324import io.ktor.utils.io.writeStringUtf8
2425import kotlinx.coroutines.runBlocking
2526import kotlinx.serialization.json.Json
27+ import kotlinx.serialization.modules.SerializersModule
2628import kotlin.system.exitProcess
2729import kotlin.time.TimeSource
2830import io.ktor.client.plugins.logging.LogLevel as KtorLogLevel
@@ -31,7 +33,9 @@ object LambdaRuntime {
3133 private val httpClient = HttpClient (Curl ) {
3234 install(HttpTimeout )
3335 install(ContentNegotiation ) {
34- json(Json { explicitNulls = false })
36+ json(Json {
37+ explicitNulls = false
38+ })
3539 }
3640 install(Logging ) {
3741 val kLogger = KtorLogger ()
Original file line number Diff line number Diff line change 11package io.github.trueangle.knative.lambda.runtime.api.dto
22
33import io.github.trueangle.knative.lambda.runtime.log.LogLevel
4+ import kotlinx.serialization.Contextual
5+ import kotlinx.serialization.KSerializer
46import kotlinx.serialization.SerialName
57import kotlinx.serialization.Serializable
8+ import kotlinx.serialization.encoding.Decoder
9+ import kotlinx.serialization.encoding.Encoder
610
711@Serializable
812internal data class LogMessageDto <T >(
Original file line number Diff line number Diff line change @@ -3,10 +3,13 @@ package io.github.trueangle.knative.lambda.runtime.log
33import io.github.trueangle.knative.lambda.runtime.api.Context
44import io.github.trueangle.knative.lambda.runtime.api.dto.LogMessageDto
55import kotlinx.datetime.Clock
6+ import kotlinx.serialization.InternalSerializationApi
67import kotlinx.serialization.SerializationException
78import kotlinx.serialization.encodeToString
89import kotlinx.serialization.json.Json
10+ import kotlinx.serialization.serializer
911
12+ @OptIn(InternalSerializationApi ::class )
1013internal class JsonLogFormatter : LogFormatter {
1114 private var requestContext: Context ? = null
1215
@@ -15,12 +18,16 @@ internal class JsonLogFormatter : LogFormatter {
1518 Json .encodeToString(
1619 LogMessageDto (
1720 timestamp = Clock .System .now().toString(),
18- message = if (message is Throwable ) message.prettyPrint() else message,
21+ message = if (message is Throwable ) message.prettyPrint() else message?.let {
22+ it::class .serializer()
23+ },
1924 level = logLevel,
2025 awsRequestId = requestContext?.awsRequestId
2126 )
2227 )
2328 } catch (e: SerializationException ) {
29+ Log .warn(" Log serialisation error: ${e.message} " )
30+
2431 Json .encodeToString(
2532 LogMessageDto (
2633 timestamp = Clock .System .now().toString(),
Original file line number Diff line number Diff line change @@ -7,14 +7,12 @@ internal class KtorLogger : Logger {
77 override fun log (message : String ) = when (getLevel()) {
88 KtorLogLevel .ALL -> Log .trace(message)
99 KtorLogLevel .BODY -> Log .debug(message)
10- KtorLogLevel .INFO -> Log .info(message)
1110 else -> Unit
1211 }
1312
1413 fun getLevel () = when (Log .currentLogLevel) {
1514 LogLevel .TRACE -> KtorLogLevel .ALL
1615 LogLevel .DEBUG -> KtorLogLevel .BODY
17- LogLevel .INFO -> KtorLogLevel .INFO
1816 else -> KtorLogLevel .NONE
1917 }
2018}
You can’t perform that action at this time.
0 commit comments