generated from rnentjes/kotlin-server-web-empty
Version. 1.0.0
This commit is contained in:
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
9
src/jsMain/kotlin/nl/astraeus/logger/Logger.js.kt
Normal file
9
src/jsMain/kotlin/nl/astraeus/logger/Logger.js.kt
Normal 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
|
||||
9
src/jvmMain/kotlin/nl/astraeus/logger/Logger.jvm.kt
Normal file
9
src/jvmMain/kotlin/nl/astraeus/logger/Logger.jvm.kt
Normal 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()
|
||||
Reference in New Issue
Block a user