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

slogging.MessageFormatter.scala Maven / Gradle / Ivy

//     Project: Default (Template) Project
//      Module:
// Description:

// Distributed under the MIT License (see included file LICENSE)
package slogging

import java.util.Date

trait MessageFormatter {
  def formatMessage(level: MessageLevel, name: String, msg: String, cause: Option[Throwable]): String
}

object MessageFormatter {
  abstract class PrefixFormatter extends MessageFormatter {
    @inline final override def formatMessage(level: MessageLevel, name: String, msg: String, cause: Option[Throwable]): String =
      if(cause.isDefined)
        formatPrefix(level,name) + msg + "\n" + cause.get.toString
      else
        formatPrefix(level,name) + msg

    def formatPrefix(level: MessageLevel, name: String): String
  }

  final class DefaultPrefixFormatter(printLevel: Boolean,
                                    printName: Boolean,
                                    printTimestamp: Boolean) extends PrefixFormatter {
    @inline
    private def getTimestamp = new Date().toString

    override def formatPrefix(level: MessageLevel, name: String): String =
      if(printTimestamp) {
        if(printName) s"[$getTimestamp, $level, $name] " else s"[$getTimestamp, $level] "
      } else {
        if(printName) s"[$level, $name] " else s"[$level] "
      }
  }

  lazy val default: MessageFormatter = new DefaultPrefixFormatter(true,true,false)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy