package nl.kallestruik.darena.util import kotlin.reflect.KClass object Logger { var level: LogLevel = LogLevel.TRACE fun trace(source: KClass<*>, message: String) { if (level.shouldLog(LogLevel.TRACE)) println("[TRACE] [${source.qualifiedName}] $message") } fun debug(source: KClass<*>, message: String) { if (level.shouldLog(LogLevel.DEBUG)) println("[DEBUG] [${source.qualifiedName}] $message") } fun info(source: KClass<*>, message: String) { if (level.shouldLog(LogLevel.INFO)) println("[INFO] [${source.qualifiedName}] $message") } fun warn(source: KClass<*>, message: String) { if (level.shouldLog(LogLevel.WARN)) println("[WARN] [${source.qualifiedName}] $message") } fun error(source: KClass<*>, message: String) { if (level.shouldLog(LogLevel.ERROR)) println("[ERROR] [${source.qualifiedName}] $message") } fun critical(source: KClass<*>, message: String) { if (level.shouldLog(LogLevel.CRITICAL)) println("[CRITICAL] [${source.qualifiedName}] $message") } enum class LogLevel( val weight: Int ) { TRACE(100), DEBUG(80), INFO(60), WARN(40), ERROR(20), CRITICAL(0); fun shouldLog(level: LogLevel): Boolean { return level.weight <= weight } } }