Version. 1.0.0

This commit is contained in:
2024-10-27 10:51:16 +01:00
parent 049347b2d2
commit 4594476416
6 changed files with 110 additions and 50 deletions

View File

@@ -1,52 +1,68 @@
package nl.astraeus.logger
enum class LogLevel {
TRACE,
DEBUG,
INFO,
WARN,
ERROR,
FATAL
enum class LogLevel(
val label: String
) {
TRACE("Trace"),
DEBUG("Debug"),
INFO(" Info"),
WARN(" Warn"),
ERROR("Error"),
FATAL("Fatal");
}
expect fun getTimestamp(): String
expect fun getCurrentThread(): String?
expect fun getCaller(): String?
class Logger(
var level: LogLevel = LogLevel.INFO
var level: LogLevel = LogLevel.INFO,
val name: String = ""
) {
fun trace(message: () -> String?) {
if (level.ordinal <= LogLevel.TRACE.ordinal) {
println("TRACE: ${message()}")
}
}
fun trace(message: () -> String) = log(LogLevel.TRACE, null, message)
fun debug(message: () -> String) = log(LogLevel.DEBUG, null, message)
fun info(message: () -> String) = log(LogLevel.INFO, null, message)
fun warn(message: () -> String) = log(LogLevel.WARN, null, message)
fun error(message: () -> String) = log(LogLevel.ERROR, null, message)
fun fatal(message: () -> String) = log(LogLevel.FATAL, null, message)
fun debug(message: () -> String?) {
if (level.ordinal <= LogLevel.DEBUG.ordinal) {
println("DEBUG: ${message()}")
}
}
fun trace(thrown: Throwable, message: () -> String) = log(LogLevel.TRACE, thrown, message)
fun debug(thrown: Throwable, message: () -> String) = log(LogLevel.DEBUG, thrown, message)
fun info(thrown: Throwable, message: () -> String) = log(LogLevel.INFO, thrown, message)
fun warn(thrown: Throwable, message: () -> String) = log(LogLevel.WARN, thrown, message)
fun error(thrown: Throwable, message: () -> String) = log(LogLevel.ERROR, thrown, message)
fun fatal(thrown: Throwable, message: () -> String) = log(LogLevel.FATAL, thrown, message)
fun info(message: () -> String?) {
if (level.ordinal <= LogLevel.INFO.ordinal) {
println("INFO: ${message()}")
}
}
private fun log(
level: LogLevel,
thrown: Throwable? = null,
message: () -> String
) {
if (level.ordinal >= this.level.ordinal) {
val timestamp: String = getTimestamp()
val thread: String? = getCurrentThread()
val caller: String? = getCaller()
fun warn(e: Throwable? = null, message: () -> String?) {
if (level.ordinal <= LogLevel.WARN.ordinal) {
println("WARN: ${message()}")
e?.printStackTrace()
}
}
val logEntry = StringBuilder()
fun error(e: Throwable? = null, message: () -> String?) {
if (level.ordinal <= LogLevel.ERROR.ordinal) {
println("ERROR: ${message()}")
e?.printStackTrace()
}
}
logEntry.append(timestamp)
logEntry.append(" - ")
logEntry.append(level.name)
logEntry.append(" - ")
if (thread != null) {
logEntry.append(thread)
logEntry.append(" - ")
}
if (caller != null) {
logEntry.append(caller)
logEntry.append(" - ")
}
logEntry.append(message())
fun fatal(e: Throwable, message: () -> String?) {
println("FATAL: ${message()}")
e.printStackTrace()
println(logEntry)
thrown?.printStackTrace()
}
}
}

View File

@@ -0,0 +1,9 @@
package nl.astraeus.logger
import kotlin.js.Date
actual fun getTimestamp(): String = Date().toISOString()
actual fun getCurrentThread(): String? = null
actual fun getCaller(): String? = null

View File

@@ -0,0 +1,9 @@
package nl.astraeus.logger
import java.util.*
actual fun getTimestamp(): String = Date().toString()
actual fun getCurrentThread(): String? = Thread.currentThread().name
actual fun getCaller(): String? = Throwable().stackTrace[2].toString()