Skip to content

Commit

Permalink
Add additional logs
Browse files Browse the repository at this point in the history
  • Loading branch information
trueangle committed Aug 25, 2024
1 parent 573169d commit a827fd7
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package io.github.trueangle.knative.lambda.runtime
import io.github.trueangle.knative.lambda.runtime.LambdaEnvironmentException.NonRecoverableStateException
import io.github.trueangle.knative.lambda.runtime.api.Context
import io.github.trueangle.knative.lambda.runtime.api.LambdaClient
import io.github.trueangle.knative.lambda.runtime.api.dto.LogMessageDto
import io.github.trueangle.knative.lambda.runtime.handler.LambdaBufferedHandler
import io.github.trueangle.knative.lambda.runtime.handler.LambdaHandler
import io.github.trueangle.knative.lambda.runtime.handler.LambdaStreamHandler
Expand All @@ -23,6 +24,7 @@ import io.ktor.utils.io.ByteWriteChannel
import io.ktor.utils.io.writeStringUtf8
import kotlinx.coroutines.runBlocking
import kotlinx.serialization.json.Json
import kotlinx.serialization.modules.SerializersModule
import kotlin.system.exitProcess
import kotlin.time.TimeSource
import io.ktor.client.plugins.logging.LogLevel as KtorLogLevel
Expand All @@ -31,7 +33,9 @@ object LambdaRuntime {
private val httpClient = HttpClient(Curl) {
install(HttpTimeout)
install(ContentNegotiation) {
json(Json { explicitNulls = false })
json(Json {
explicitNulls = false
})
}
install(Logging) {
val kLogger = KtorLogger()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package io.github.trueangle.knative.lambda.runtime.api.dto

import io.github.trueangle.knative.lambda.runtime.log.LogLevel
import kotlinx.serialization.Contextual
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder

@Serializable
internal data class LogMessageDto<T>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@ package io.github.trueangle.knative.lambda.runtime.log
import io.github.trueangle.knative.lambda.runtime.api.Context
import io.github.trueangle.knative.lambda.runtime.api.dto.LogMessageDto
import kotlinx.datetime.Clock
import kotlinx.serialization.InternalSerializationApi
import kotlinx.serialization.SerializationException
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import kotlinx.serialization.serializer

@OptIn(InternalSerializationApi::class)
internal class JsonLogFormatter : LogFormatter {
private var requestContext: Context? = null

Expand All @@ -15,12 +18,16 @@ internal class JsonLogFormatter : LogFormatter {
Json.encodeToString(
LogMessageDto(
timestamp = Clock.System.now().toString(),
message = if (message is Throwable) message.prettyPrint() else message,
message = if (message is Throwable) message.prettyPrint() else message?.let {
it::class.serializer()
},
level = logLevel,
awsRequestId = requestContext?.awsRequestId
)
)
} catch (e: SerializationException) {
Log.warn("Log serialisation error: ${e.message}")

Json.encodeToString(
LogMessageDto(
timestamp = Clock.System.now().toString(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,12 @@ internal class KtorLogger : Logger {
override fun log(message: String) = when (getLevel()) {
KtorLogLevel.ALL -> Log.trace(message)
KtorLogLevel.BODY -> Log.debug(message)
KtorLogLevel.INFO -> Log.info(message)
else -> Unit
}

fun getLevel() = when (Log.currentLogLevel) {
LogLevel.TRACE -> KtorLogLevel.ALL
LogLevel.DEBUG -> KtorLogLevel.BODY
LogLevel.INFO -> KtorLogLevel.INFO
else -> KtorLogLevel.NONE
}
}
Expand Down

0 comments on commit a827fd7

Please sign in to comment.