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

com.mle.logbackrx.LogbackUtils.scala Maven / Gradle / Ivy

package com.mle.logbackrx

import ch.qos.logback.core.Appender
import ch.qos.logback.classic.spi.ILoggingEvent
import org.slf4j.LoggerFactory
import ch.qos.logback.classic.{Logger, LoggerContext}

/**
 *
 * @author mle
 */
object LogbackUtils {
  def appender[T](appenderName: String, loggerName: String = org.slf4j.Logger.ROOT_LOGGER_NAME): Option[T] =
    Option(
      LoggerFactory.getLogger(loggerName)
        .asInstanceOf[Logger]
        .getAppender(appenderName)
        .asInstanceOf[T])

  def getAppender[T](appenderName: String, loggerName: String = "ROOT"): T =
    appender[T](appenderName, loggerName)
      .getOrElse(throw new NoSuchElementException(s"Unable to find appender with name: $appenderName"))

  def installAppender(appender: Appender[ILoggingEvent], loggerName: String = org.slf4j.Logger.ROOT_LOGGER_NAME) = {
    if (appender.getContext == null) {
      appender setContext LoggerFactory.getILoggerFactory.asInstanceOf[LoggerContext]
    }
    if (!appender.isStarted) {
      appender.start()
    }
    val logger = LoggerFactory.getLogger(loggerName).asInstanceOf[Logger]
    logger addAppender appender
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy