🐛 Adds error logging for exceptions

This commit is contained in:
Streamer272 committed 2026-04-16 20:32:32 +02:00
1 parent 995b6ed677
commit b8767a909a
2 files changed
+21

No files matched your search

+1
View File
@@ -37,6 +37,7 @@ dependencies {
implementation("io.ktor:ktor-server-compression") implementation("io.ktor:ktor-server-compression")
implementation("io.ktor:ktor-server-netty") implementation("io.ktor:ktor-server-netty")
implementation("ch.qos.logback:logback-classic:$logback_version") 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") implementation("io.github.cdimascio:dotenv-kotlin:6.5.1")
testImplementation("io.ktor:ktor-server-test-host") testImplementation("io.ktor:ktor-server-test-host")
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version") testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
+20
View File
@@ -1,17 +1,27 @@
package dev.svitan.plugins package dev.svitan.plugins
import io.github.oshai.kotlinlogging.KotlinLogging
import io.ktor.http.HttpStatusCode import io.ktor.http.HttpStatusCode
import io.ktor.server.application.Application import io.ktor.server.application.Application
import io.ktor.server.application.InvalidBodyException
import io.ktor.server.application.install 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.NotFoundException
import io.ktor.server.plugins.statuspages.StatusPages 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 import io.ktor.server.response.respond
class AuthorizationException(message: String) : Exception(message) class AuthorizationException(message: String) : Exception(message)
fun Application.configureErrors() { fun Application.configureErrors() {
val logger = KotlinLogging.logger {}
install(StatusPages) { install(StatusPages) {
exception<Throwable> { call, cause -> exception<Throwable> { call, cause ->
logger.error(cause) { "${call.request.httpMethod} ${call.request.uri}" }
when (cause) { when (cause) {
is IllegalArgumentException -> call.respond( is IllegalArgumentException -> call.respond(
status = HttpStatusCode.BadRequest, status = HttpStatusCode.BadRequest,
@@ -28,6 +38,16 @@ fun Application.configureErrors() {
message = cause.message ?: "" 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( else -> call.respond(
status = HttpStatusCode.InternalServerError, status = HttpStatusCode.InternalServerError,
message = cause.message ?: "" message = cause.message ?: ""