🐛 Adds error logging for exceptions
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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 ?: ""
|
||||
|
||||
Reference in New Issue
Block a user