🐛 Adds error logging for exceptions

This commit is contained in:
2026-04-16 20:32:32 +02:00
parent 995b6ed677
commit b8767a909a
2 changed files with 21 additions and 0 deletions
+1
View File
@@ -37,6 +37,7 @@ dependencies {
implementation("io.ktor:ktor-server-compression")
implementation("io.ktor:ktor-server-netty")
implementation("ch.qos.logback:logback-classic:$logback_version")
implementation("io.github.oshai:kotlin-logging-jvm:7.0.3")
implementation("io.github.cdimascio:dotenv-kotlin:6.5.1")
testImplementation("io.ktor:ktor-server-test-host")
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
+20
View File
@@ -1,17 +1,27 @@
package dev.svitan.plugins
import io.github.oshai.kotlinlogging.KotlinLogging
import io.ktor.http.HttpStatusCode
import io.ktor.server.application.Application
import io.ktor.server.application.InvalidBodyException
import io.ktor.server.application.install
import io.ktor.server.application.log
import io.ktor.server.plugins.BadRequestException
import io.ktor.server.plugins.NotFoundException
import io.ktor.server.plugins.statuspages.StatusPages
import io.ktor.server.request.httpMethod
import io.ktor.server.request.uri
import io.ktor.server.response.respond
class AuthorizationException(message: String) : Exception(message)
fun Application.configureErrors() {
val logger = KotlinLogging.logger {}
install(StatusPages) {
exception<Throwable> { call, cause ->
logger.error(cause) { "${call.request.httpMethod} ${call.request.uri}" }
when (cause) {
is IllegalArgumentException -> call.respond(
status = HttpStatusCode.BadRequest,
@@ -28,6 +38,16 @@ fun Application.configureErrors() {
message = cause.message ?: ""
)
is BadRequestException -> call.respond(
status = HttpStatusCode.BadRequest,
message = cause.message ?: ""
)
is InvalidBodyException -> call.respond(
status = HttpStatusCode.BadRequest,
message = cause.message ?: ""
)
else -> call.respond(
status = HttpStatusCode.InternalServerError,
message = cause.message ?: ""