tech.pylons.lib.logging.Logger.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of libpylons Show documentation
Show all versions of libpylons Show documentation
Library providing common functionality for interacting with the Pylons ecosystem
The newest version!
package tech.pylons.lib.logging
import java.util.*
import tech.pylons.lib.klaxon
/**
* Generic class for Logging Things.
* Subclass this and override Logger.implementation to make walletcore use an implementation that
* sends log files to the filesystem or over the network or w/e.
*/
open class Logger {
/**
* Models a single log entry.
* evt is a string describing the event being logged (briefly),
* tag is a string denoting the origin of the event (walletcore internals,
* wallet implementation, malformed user data, etc.),
* timestamp is a number of milliseconds since 1/1/1970.
*
* msg is the body of the entry, This should always be a JSON blob for parsing purposes.
*/
data class Entry (
val evt : String,
val msg : String,
val tag : String,
val timestamp : Long = Date().time
) {
/**
* Emits the log entry serialized as a JSON string.
*/
fun serialize () = klaxon.toJsonString(this)
}
companion object {
/**
* Gets a reference to a Logger instance.
* If a wallet implementation defines its own Logger implementation,
* you can set Logger.Implementation() to an instance of that class
* to ensure walletcore actually uses it.
*/
var implementation = Logger()
}
/**
* Creates and logs a new entry using the given parameters. See Logger.Entry for more info.
* This is an open method, and is intended to be overridden by Logger implementations that do something other than
* pipe lones into stdout.
*/
open fun log (evt: String, msg : String, tag : String) = println(Entry(evt, msg, tag))
}