KotlinLogging - option to globally disable logging

This commit is contained in:
2026-09-12 20:29:20 +01:00
parent 7384642a6d
commit ab88896b01
4 changed files with 21 additions and 7 deletions
@@ -1,3 +1,7 @@
package com.shr4pnel.ferretirc.irc.util
class Helpers
class Helpers {
companion object LoggingConfig {
var enableLogging = true
}
}
@@ -1,18 +1,16 @@
package com.shr4pnel.ferretirc.net
import com.shr4pnel.ferretirc.irc.util.Helpers
import com.shr4pnel.ferretirc.net.messages.ServerMessage
import io.github.oshai.kotlinlogging.KotlinLogging
import io.ktor.http.parameters
import io.ktor.network.selector.SelectInterest
import io.ktor.util.toUpperCasePreservingASCIIRules
import io.github.oshai.kotlinlogging.slf4j.logger
import kotlinx.coroutines.channels.Channel
import org.slf4j.helpers.NOPLogger
class MessageParser(val incoming: Channel<String>) {
private val logger = KotlinLogging.logger("MessageParser")
val incomingParsedMessages = Channel<ServerMessage>()
private companion object MessageBuilder {
val logger = KotlinLogging.logger("MessageParser.MessageBuilder")
fun getTrailingParameterIndex(params: List<String>) = params.indexOfLast { it.startsWith(":") }
sealed interface Command {
@@ -58,6 +56,7 @@ class MessageParser(val incoming: Channel<String>) {
}
}
}
private val logger = if (Helpers.enableLogging) KotlinLogging.logger {} else KotlinLogging.logger(NOPLogger.NOP_LOGGER)
class NumericCommand(val number: Int, val parameters: List<String>?) : Command {
override fun toServerMessage(): ServerMessage {
@@ -106,6 +105,7 @@ class MessageParser(val incoming: Channel<String>) {
suspend fun start() {
for (msg in incoming) {
incomingParsedMessages.send(build(msg))
logger.trace { "Receiving: $msg" }
}
}
}
@@ -1,7 +1,10 @@
package com.shr4pnel.ferretirc.net
import com.shr4pnel.ferretirc.irc.util.Helpers
import com.shr4pnel.ferretirc.net.messages.MessageIO
import com.shr4pnel.ferretirc.net.messages.ServerMessage
import io.github.oshai.kotlinlogging.KotlinLogging
import io.github.oshai.kotlinlogging.slf4j.logger
import io.ktor.network.sockets.Socket
import io.ktor.network.sockets.openReadChannel
import io.ktor.utils.io.ByteReadChannel
@@ -12,6 +15,7 @@ import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
import org.slf4j.helpers.NOPLogger
import kotlin.reflect.KClass
import kotlin.reflect.cast
@@ -20,6 +24,8 @@ class MessageReader(socket: Socket, scope: CoroutineScope) : MessageIO(socket, s
private val listenedMessages = mutableListOf<ServerMessage>()
val messageBuffer = MutableSharedFlow<ServerMessage>(16, 64)
val parser = MessageParser(incomingMessages)
private val logger = if (Helpers.enableLogging) KotlinLogging.logger {} else KotlinLogging.logger(NOPLogger.NOP_LOGGER)
init {
scope.launch {
@@ -35,6 +41,7 @@ class MessageReader(socket: Socket, scope: CoroutineScope) : MessageIO(socket, s
while (true) {
val line = receive.readLineStrict() ?: break // >:( no LineEnding option for just CRLF? charlatans...
incomingMessages.send(line)
logger.debug { "Receive: $line" }
}
}
@@ -1,17 +1,20 @@
package com.shr4pnel.ferretirc.net
import com.shr4pnel.ferretirc.irc.util.Helpers
import com.shr4pnel.ferretirc.net.messages.MessageIO
import io.github.oshai.kotlinlogging.KotlinLogging
import io.github.oshai.kotlinlogging.slf4j.logger
import io.ktor.network.sockets.Socket
import io.ktor.network.sockets.openWriteChannel
import io.ktor.utils.io.ByteWriteChannel
import io.ktor.utils.io.writeFully
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import org.slf4j.helpers.NOPLogger
class MessageWriter(socket: Socket, scope: CoroutineScope) : MessageIO(socket, scope) {
private lateinit var send: ByteWriteChannel
private val logger = KotlinLogging.logger("MessageWriter")
private val logger = if (Helpers.enableLogging) KotlinLogging.logger {} else KotlinLogging.logger(NOPLogger.NOP_LOGGER)
override fun start() = scope.launch {
send = socket.openWriteChannel()