All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mb.pie.runtime.logger.Stream.kt Maven / Gradle / Ivy

The newest version!
package mb.pie.runtime.logger

import mb.pie.api.Logger
import java.io.PrintWriter
import java.util.concurrent.atomic.AtomicInteger

open class StreamLogger(
  private val errorWriter: PrintWriter = PrintWriter(System.out, true),
  private val warnWriter: PrintWriter? = PrintWriter(System.out, true),
  private val infoWriter: PrintWriter? = PrintWriter(System.out, true),
  private val debugWriter: PrintWriter? = PrintWriter(System.out, true),
  private val traceWriter: PrintWriter? = PrintWriter(System.out, true)
) : Logger {
  private var indentation = AtomicInteger(0)
  private val indent get() = " ".repeat(indentation.get())

  companion object {
    @JvmStatic
    fun only_errors(): StreamLogger = StreamLogger(warnWriter = null, infoWriter = null, debugWriter = null, traceWriter = null)

    @JvmStatic
    fun non_verbose(): StreamLogger = StreamLogger(debugWriter = null, traceWriter = null)

    @JvmStatic
    fun verbose(): StreamLogger = StreamLogger()
  }

  override fun error(message: String, throwable: Throwable?) {
    errorWriter.println("$indent$message")
    if(throwable?.message != null) {
      errorWriter.println(throwable.message)
    }
  }

  override fun warn(message: String, throwable: Throwable?) {
    if(warnWriter == null) return
    warnWriter.println("$indent$message")
    if(throwable?.message != null) {
      warnWriter.println(throwable.message)
    }
  }

  override fun info(message: String) {
    infoWriter?.println("$indent$message")
  }

  override fun debug(message: String) {
    debugWriter?.println("$indent$message")
  }

  override fun trace(message: String) {
    traceWriter?.println("$indent$message")
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy