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

org.opalj.log.Level.scala Maven / Gradle / Ivy

The newest version!
/* BSD 2-Clause License - see OPAL/LICENSE for details. */
package org.opalj
package log

/**
 * Common super trait of all log levels.
 *
 * @author Michael Eichberg
 */
sealed abstract class Level {

    def apply(info: String): LogMessage

    def apply(category: String, info: String): LogMessage

    def ansiColorEscape: String

    def id: String

    def value: Int
}

/**
 * Factory for info level log messages.
 *
 * @see [[OPALLogger$]] for usage instructions.
 */
case object Info extends Level {

    def apply(info: String): LogMessage = BasicLogMessage(message = info)

    def apply(category: String, info: String): LogMessage = {
        new StandardLogMessage(Info, Some(category), info)
    }

    def ansiColorEscape: String = ""

    def id: String = "info"

    final val value: Int = 0
}
/**
 * Factory for warn level log messages.
 *
 * @see [[OPALLogger$]] for usage instructions.
 */
case object Warn extends Level {

    def apply(info: String): LogMessage = BasicLogMessage(Warn, info)

    def apply(category: String, info: String): LogMessage = {
        new StandardLogMessage(Warn, Some(category), info)
    }

    def ansiColorEscape: String = Console.BLUE

    def id: String = "warn"

    final val value: Int = 1000
}

/**
 * Factory for error level log messages.
 *
 * @see [[OPALLogger$]] for usage instructions.
 */
case object Error extends Level {

    def apply(info: String): LogMessage = BasicLogMessage(Error, info)

    def apply(category: String, info: String): LogMessage = {
        new StandardLogMessage(Error, Some(category), info)
    }

    def apply(category: String, info: String, t: Throwable): LogMessage = {
        try {
            new ExceptionLogMessage(Error, Some(category), info, t)
        } catch {
            case it: Throwable ⇒
                Console.err.println(
                    s"[fatal][OPAL] logging [error][$category] $info: ${t.getMessage} failed:"
                )
                it.printStackTrace(Console.err)
                BasicLogMessage(Fatal, it.getMessage)
        }
    }

    def ansiColorEscape: String = Console.RED

    def id: String = "error"

    final val value: Int = Int.MaxValue - 1000
}

case object Fatal extends Level {

    def apply(info: String): LogMessage = new BasicLogMessage(Fatal, info)

    def apply(category: String, info: String): LogMessage = {
        new StandardLogMessage(Fatal, Some(category), info)
    }

    def ansiColorEscape: String = Console.RED + Console.YELLOW_B

    def id: String = "fatal"

    final val value: Int = Int.MaxValue
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy