🐛 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-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")
|
||||||
|
|||||||
@@ -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 ?: ""
|
||||||
|
|||||||
Reference in New Issue
Block a user