63 lines
1.7 KiB
Kotlin
63 lines
1.7 KiB
Kotlin
package nl.astraeus.persistence
|
|
|
|
enum class LogLevel {
|
|
TRACE,
|
|
DEBUG,
|
|
INFO,
|
|
WARN,
|
|
ERROR
|
|
}
|
|
|
|
object Logger {
|
|
var level: LogLevel = LogLevel.DEBUG
|
|
|
|
var tracePrinter: (String) -> Unit = { println(it) }
|
|
var debugPrinter: (String) -> Unit = { println(it) }
|
|
var infoPrinter: (String) -> Unit = { println(it) }
|
|
var warnPrinter: (String) -> Unit = { println(it) }
|
|
var errorPrinter: (String) -> Unit = { System.err.println(it) }
|
|
|
|
fun trace(message: String, vararg parameters: Any?) {
|
|
if (level <= LogLevel.TRACE) {
|
|
writeLogMessage(LogLevel.TRACE, message, *parameters)
|
|
}
|
|
}
|
|
|
|
fun debug(message: String, vararg parameters: Any?) {
|
|
if (level <= LogLevel.DEBUG) {
|
|
writeLogMessage(LogLevel.DEBUG, message, *parameters)
|
|
}
|
|
}
|
|
|
|
fun info(message: String, vararg parameters: Any?) {
|
|
if (level <= LogLevel.INFO) {
|
|
writeLogMessage(LogLevel.INFO, message, *parameters)
|
|
}
|
|
}
|
|
|
|
fun warn(message: String, vararg parameters: Any?) {
|
|
if (level <= LogLevel.DEBUG) {
|
|
writeLogMessage(LogLevel.DEBUG, message, *parameters)
|
|
}
|
|
}
|
|
|
|
fun error(message: String, vararg parameters: Any?) {
|
|
if (level <= LogLevel.ERROR) {
|
|
writeLogMessage(LogLevel.ERROR, message, *parameters)
|
|
}
|
|
}
|
|
|
|
private fun writeLogMessage(level: LogLevel, message: String, vararg parameters: Any?) {
|
|
val formattedMessage = "[${level}] - ${message.format(*parameters)}"
|
|
|
|
when (level) {
|
|
LogLevel.TRACE -> tracePrinter(formattedMessage)
|
|
LogLevel.DEBUG -> debugPrinter(formattedMessage)
|
|
LogLevel.INFO -> infoPrinter(formattedMessage)
|
|
LogLevel.WARN -> warnPrinter(formattedMessage)
|
|
LogLevel.ERROR -> errorPrinter(formattedMessage)
|
|
}
|
|
|
|
}
|
|
}
|