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

com.digitalasset.logging.LeveledLogger.scala Maven / Gradle / Ivy

// Copyright (c) 2020 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved.
// SPDX-License-Identifier: Apache-2.0

package com.digitalasset.logging

import org.slf4j.{Logger, Marker}

private[logging] object LeveledLogger {

  final class Trace(logger: Logger) extends LeveledLogger {
    override protected def isEnabled: Boolean =
      logger.isTraceEnabled()
    override protected def log(msg: String): Unit =
      logger.trace(msg)
    override protected def log(msg: String, t: Throwable): Unit =
      logger.trace(msg, t)
    override protected def log(m: Marker, msg: String, t: Throwable): Unit =
      logger.trace(m, msg, t)
    override protected def log(fmt: String, arg: AnyRef): Unit =
      logger.trace(fmt, arg)
  }

  final class Debug(logger: Logger) extends LeveledLogger {
    override protected def isEnabled: Boolean =
      logger.isDebugEnabled()
    override protected def log(msg: String): Unit =
      logger.debug(msg)
    override protected def log(msg: String, t: Throwable): Unit =
      logger.debug(msg, t)
    override protected def log(m: Marker, msg: String, t: Throwable): Unit =
      logger.debug(m, msg, t)
    override protected def log(fmt: String, arg: AnyRef): Unit =
      logger.debug(fmt, arg)
  }

  final class Info(logger: Logger) extends LeveledLogger {
    override protected def isEnabled: Boolean =
      logger.isInfoEnabled()
    override protected def log(msg: String): Unit =
      logger.info(msg)
    override protected def log(msg: String, t: Throwable): Unit =
      logger.info(msg, t)
    override protected def log(m: Marker, msg: String, t: Throwable): Unit =
      logger.info(m, msg, t)
    override protected def log(fmt: String, arg: AnyRef): Unit =
      logger.info(fmt, arg)
  }

  final class Warn(logger: Logger) extends LeveledLogger {
    override protected def isEnabled: Boolean =
      logger.isWarnEnabled()
    override protected def log(msg: String): Unit =
      logger.warn(msg)
    override protected def log(msg: String, t: Throwable): Unit =
      logger.warn(msg, t)
    override protected def log(m: Marker, msg: String, t: Throwable): Unit =
      logger.warn(m, msg, t)
    override protected def log(fmt: String, arg: AnyRef): Unit =
      logger.warn(fmt, arg)
  }

  final class Error(logger: Logger) extends LeveledLogger {
    override protected def isEnabled: Boolean =
      logger.isErrorEnabled()
    override protected def log(msg: String): Unit =
      logger.error(msg)
    override protected def log(msg: String, t: Throwable): Unit =
      logger.error(msg, t)
    override protected def log(m: Marker, msg: String, t: Throwable): Unit =
      logger.error(m, msg, t)
    override protected def log(fmt: String, arg: AnyRef): Unit =
      logger.error(fmt, arg)
  }

}

private[logging] sealed abstract class LeveledLogger {

  protected def isEnabled: Boolean

  protected def log(msg: String): Unit
  protected def log(msg: String, t: Throwable): Unit
  protected def log(m: Marker, msg: String, t: Throwable): Unit
  protected def log(fmt: String, arg: AnyRef): Unit

  final def apply(msg: => String)(implicit logCtx: LoggingContext): Unit =
    if (isEnabled)
      logCtx.ifEmpty(log(msg))(log(s"$msg (context: {})", _))

  final def apply(msg: => String, t: Throwable)(implicit logCtx: LoggingContext): Unit =
    if (isEnabled)
      logCtx.ifEmpty(log(msg, t))(c => log(c, s"$msg (context: $c)", t))

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy