package com.drivergrp.core
import com.typesafe.scalalogging.{LazyLogging, StrictLogging}
import org.slf4j.Marker
object logging {
trait LoggerModule {
def log: Logger
}
trait NopLoggerModule extends LoggerModule {
def log: Logger = new NopLogger()
}
/**
* Defines `logger` as a lazy value initialized with an underlying `org.slf4j.Logger`
* named according to the class into which this trait is mixed.
*/
trait LazyLoggerModule extends LoggerModule {
this: LazyLogging =>
override val log: Logger = new TypesafeScalaLogger(logger)
}
/**
* Defines `logger` as a value initialized with an underlying `org.slf4j.Logger`
* named according to the class into which this trait is mixed.
*/
trait StrictLoggerModule extends LoggerModule {
this: StrictLogging =>
override val log: Logger = new TypesafeScalaLogger(logger)
}
trait Logger {
def fatal(message: String): Unit
def fatal(message: String, cause: Throwable): Unit
def fatal(message: String, args: AnyRef*): Unit
def fatal(marker: Marker, message: String): Unit
def fatal(marker: Marker, message: String, cause: Throwable): Unit
def fatal(marker: Marker, message: String, args: AnyRef*): Unit
def error(message: String): Unit
def error(message: String, cause: Throwable): Unit
def error(message: String, args: AnyRef*): Unit
def error(marker: Marker, message: String): Unit
def error(marker: Marker, message: String, cause: Throwable): Unit
def error(marker: Marker, message: String, args: AnyRef*): Unit
def audit(message: String): Unit
def audit(message: String, cause: Throwable): Unit
def audit(message: String, args: AnyRef*): Unit
def audit(marker: Marker, message: String): Unit
def audit(marker: Marker, message: String, cause: Throwable): Unit
def audit(marker: Marker, message: String, args: AnyRef*): Unit
def debug(message: String): Unit
def debug(message: String, cause: Throwable): Unit
def debug(message: String, args: AnyRef*): Unit
def debug(marker: Marker, message: String): Unit
def debug(marker: Marker, message: String, cause: Throwable): Unit
def debug(marker: Marker, message: String, args: AnyRef*): Unit
}
class TypesafeScalaLogger(scalaLogging: com.typesafe.scalalogging.Logger) extends Logger {
def fatal(message: String): Unit = scalaLogging.error(message)
def fatal(message: String, cause: Throwable): Unit = scalaLogging.error(message, cause)
def fatal(message: String, args: AnyRef*): Unit = scalaLogging.error(message, args)
def fatal(marker: Marker, message: String): Unit = scalaLogging.error(marker, message)
def fatal(marker: Marker, message: String, cause: Throwable): Unit = scalaLogging.error(marker, message, cause)
def fatal(marker: Marker, message: String, args: AnyRef*): Unit = scalaLogging.error(marker, message, args)
def error(message: String): Unit = scalaLogging.warn(message)
def error(message: String, cause: Throwable): Unit = scalaLogging.warn(message, cause)
def error(message: String, args: AnyRef*): Unit = scalaLogging.warn(message, args)
def error(marker: Marker, message: String): Unit = scalaLogging.warn(marker, message)
def error(marker: Marker, message: String, cause: Throwable): Unit = scalaLogging.warn(marker, message, cause)
def error(marker: Marker, message: String, args: AnyRef*): Unit = scalaLogging.warn(marker, message, args)
def audit(message: String): Unit = scalaLogging.info(message)
def audit(message: String, cause: Throwable): Unit = scalaLogging.info(message, cause)
def audit(message: String, args: AnyRef*): Unit = scalaLogging.info(message, args)
def audit(marker: Marker, message: String): Unit = scalaLogging.info(marker, message)
def audit(marker: Marker, message: String, cause: Throwable): Unit = scalaLogging.info(marker, message, cause)
def audit(marker: Marker, message: String, args: AnyRef*): Unit = scalaLogging.info(marker, message, args)
def debug(message: String): Unit = scalaLogging.debug(message)
def debug(message: String, cause: Throwable): Unit = scalaLogging.debug(message, cause)
def debug(message: String, args: AnyRef*): Unit = scalaLogging.debug(message, args)
def debug(marker: Marker, message: String): Unit = scalaLogging.debug(marker, message)
def debug(marker: Marker, message: String, cause: Throwable): Unit = scalaLogging.debug(marker, message, cause)
def debug(marker: Marker, message: String, args: AnyRef*): Unit = scalaLogging.debug(marker, message, args)
}
class NopLogger() extends Logger {
def fatal(message: String): Unit = {}
def fatal(message: String, cause: Throwable): Unit = {}
def fatal(message: String, args: AnyRef*): Unit = {}
def fatal(marker: Marker, message: String): Unit = {}
def fatal(marker: Marker, message: String, cause: Throwable): Unit = {}
def fatal(marker: Marker, message: String, args: AnyRef*): Unit = {}
def error(message: String): Unit = {}
def error(message: String, cause: Throwable): Unit = {}
def error(message: String, args: AnyRef*): Unit = {}
def error(marker: Marker, message: String): Unit = {}
def error(marker: Marker, message: String, cause: Throwable): Unit = {}
def error(marker: Marker, message: String, args: AnyRef*): Unit = {}
def audit(message: String): Unit = {}
def audit(message: String, cause: Throwable): Unit = {}
def audit(message: String, args: AnyRef*): Unit = {}
def audit(marker: Marker, message: String): Unit = {}
def audit(marker: Marker, message: String, cause: Throwable): Unit = {}
def audit(marker: Marker, message: String, args: AnyRef*): Unit = {}
def debug(message: String): Unit = {}
def debug(message: String, cause: Throwable): Unit = {}
def debug(message: String, args: AnyRef*): Unit = {}
def debug(marker: Marker, message: String): Unit = {}
def debug(marker: Marker, message: String, cause: Throwable): Unit = {}
def debug(marker: Marker, message: String, args: AnyRef*): Unit = {}
}
}