aboutsummaryrefslogblamecommitdiff
path: root/src/main/scala/com/drivergrp/core/logging.scala
blob: 35f3a1bc74050d3c7cf8f6961197a5a4d7a47b6c (plain) (tree)



































































































































                                                                                                                   
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 = {}
  }
}