Skip to content

Commit a827fd7

Browse files
committed
Add additional logs
1 parent 573169d commit a827fd7

File tree

4 files changed

+17
-4
lines changed

4 files changed

+17
-4
lines changed

lambda-runtime/src/commonMain/kotlin/io/github/trueangle/knative/lambda/runtime/LambdaRuntime.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package io.github.trueangle.knative.lambda.runtime
33
import io.github.trueangle.knative.lambda.runtime.LambdaEnvironmentException.NonRecoverableStateException
44
import io.github.trueangle.knative.lambda.runtime.api.Context
55
import io.github.trueangle.knative.lambda.runtime.api.LambdaClient
6+
import io.github.trueangle.knative.lambda.runtime.api.dto.LogMessageDto
67
import io.github.trueangle.knative.lambda.runtime.handler.LambdaBufferedHandler
78
import io.github.trueangle.knative.lambda.runtime.handler.LambdaHandler
89
import io.github.trueangle.knative.lambda.runtime.handler.LambdaStreamHandler
@@ -23,6 +24,7 @@ import io.ktor.utils.io.ByteWriteChannel
2324
import io.ktor.utils.io.writeStringUtf8
2425
import kotlinx.coroutines.runBlocking
2526
import kotlinx.serialization.json.Json
27+
import kotlinx.serialization.modules.SerializersModule
2628
import kotlin.system.exitProcess
2729
import kotlin.time.TimeSource
2830
import 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()

lambda-runtime/src/commonMain/kotlin/io/github/trueangle/knative/lambda/runtime/api/dto/LogMessageDto.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package io.github.trueangle.knative.lambda.runtime.api.dto
22

33
import io.github.trueangle.knative.lambda.runtime.log.LogLevel
4+
import kotlinx.serialization.Contextual
5+
import kotlinx.serialization.KSerializer
46
import kotlinx.serialization.SerialName
57
import kotlinx.serialization.Serializable
8+
import kotlinx.serialization.encoding.Decoder
9+
import kotlinx.serialization.encoding.Encoder
610

711
@Serializable
812
internal data class LogMessageDto<T>(

lambda-runtime/src/commonMain/kotlin/io/github/trueangle/knative/lambda/runtime/log/JsonLogFormatter.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@ package io.github.trueangle.knative.lambda.runtime.log
33
import io.github.trueangle.knative.lambda.runtime.api.Context
44
import io.github.trueangle.knative.lambda.runtime.api.dto.LogMessageDto
55
import kotlinx.datetime.Clock
6+
import kotlinx.serialization.InternalSerializationApi
67
import kotlinx.serialization.SerializationException
78
import kotlinx.serialization.encodeToString
89
import kotlinx.serialization.json.Json
10+
import kotlinx.serialization.serializer
911

12+
@OptIn(InternalSerializationApi::class)
1013
internal 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(),

lambda-runtime/src/commonMain/kotlin/io/github/trueangle/knative/lambda/runtime/log/KtorLogger.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff 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
}

0 commit comments

Comments
 (0)