From 3190db253805a931660eb37d191648e6ef55d96b Mon Sep 17 00:00:00 2001 From: vlad Date: Wed, 12 Oct 2016 18:02:31 -0700 Subject: DIR-1 Trying to break --- src/main/scala/com/drivergrp/core/logging.scala | 124 ++++++++++++++++++------ 1 file changed, 97 insertions(+), 27 deletions(-) diff --git a/src/main/scala/com/drivergrp/core/logging.scala b/src/main/scala/com/drivergrp/core/logging.scala index 126c670..2c8c670 100644 --- a/src/main/scala/com/drivergrp/core/logging.scala +++ b/src/main/scala/com/drivergrp/core/logging.scala @@ -1,5 +1,11 @@ package com.drivergrp.core +import java.text.SimpleDateFormat +import java.util.Date + +import ch.qos.logback.classic.spi.ILoggingEvent +import ch.qos.logback.core.LayoutBase +import org.apache.commons.lang3.StringUtils import org.slf4j.Marker object logging { @@ -44,33 +50,41 @@ object logging { */ 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) + def fatal(message: String): Unit = scalaLogging.error("FATAL " + message) + def fatal(message: String, cause: Throwable): Unit = scalaLogging.error("FATAL " + message, cause) + def fatal(message: String, args: AnyRef*): Unit = scalaLogging.error("FATAL " + message, args) + def fatal(marker: Marker, message: String): Unit = scalaLogging.error(marker, "FATAL " + message) + def fatal(marker: Marker, message: String, cause: Throwable): Unit = + scalaLogging.error(marker, "FATAL " + message, cause) + def fatal(marker: Marker, message: String, args: AnyRef*): Unit = + scalaLogging.error(marker, "FATAL " + message, args) + + def error(message: String): Unit = scalaLogging.warn("ERROR " + message) + def error(message: String, cause: Throwable): Unit = scalaLogging.warn("ERROR " + message, cause) + def error(message: String, args: AnyRef*): Unit = scalaLogging.warn("ERROR " + message, args) + def error(marker: Marker, message: String): Unit = scalaLogging.warn(marker, "ERROR " + message) + def error(marker: Marker, message: String, cause: Throwable): Unit = + scalaLogging.warn(marker, "ERROR " + message, cause) + def error(marker: Marker, message: String, args: AnyRef*): Unit = + scalaLogging.warn(marker, "ERROR " + message, args) + + def audit(message: String): Unit = scalaLogging.info("AUDIT " + message) + def audit(message: String, cause: Throwable): Unit = scalaLogging.info("AUDIT " + message, cause) + def audit(message: String, args: AnyRef*): Unit = scalaLogging.info("AUDIT " + message, args) + def audit(marker: Marker, message: String): Unit = scalaLogging.info(marker, "AUDIT " + message) + def audit(marker: Marker, message: String, cause: Throwable): Unit = + scalaLogging.info(marker, "AUDIT " + message, cause) + def audit(marker: Marker, message: String, args: AnyRef*): Unit = + scalaLogging.info(marker, "AUDIT " + message, args) + + def debug(message: String): Unit = scalaLogging.debug("DEBUG " + message) + def debug(message: String, cause: Throwable): Unit = scalaLogging.debug("DEBUG " + message, cause) + def debug(message: String, args: AnyRef*): Unit = scalaLogging.debug("DEBUG " + message, args) + def debug(marker: Marker, message: String): Unit = scalaLogging.debug(marker, "DEBUG " + message) + def debug(marker: Marker, message: String, cause: Throwable): Unit = + scalaLogging.debug(marker, "DEBUG " + message, cause) + def debug(marker: Marker, message: String, args: AnyRef*): Unit = + scalaLogging.debug(marker, "DEBUG " + message, args) } class NoLogger() extends Logger { @@ -103,4 +117,60 @@ object logging { def debug(marker: Marker, message: String, cause: Throwable): Unit = {} def debug(marker: Marker, message: String, args: AnyRef*): Unit = {} } + + class DriverLayout extends LayoutBase[ILoggingEvent] { + import scala.collection.JavaConverters._ + + private val AVERAGE_MAXIMAL_MESSAGE_LENGTH = 256 + private val FieldSeparator = "=" + private val DateFormatString = "MM/dd/yyyy HH:mm:ss" + private val newline = System.getProperty("line.separator") + private val IgnoredClassesInStack = Set("org.apache.catalina", "org.apache.coyote", "sun.reflect", "javax.servlet") + + override def doLayout(loggingEvent: ILoggingEvent): String = { + + val message = new StringBuilder(AVERAGE_MAXIMAL_MESSAGE_LENGTH) + .append(new SimpleDateFormat(DateFormatString).format(new Date(loggingEvent.getTimeStamp))) + .append(" [") + .append(StringUtils.rightPad(loggingEvent.getLevel.toString, 5)) + .append(']') + .append(" - ") + .append(loggingEvent.getMessage) + .append(newline) + + logContext(message, loggingEvent) + + Option(loggingEvent.getCallerData) foreach { stacktrace => + val stacktraceLength = stacktrace.length + + if (stacktraceLength > 0) { + val location = stacktrace.head + + val _ = message + .append(s"Location: ${location.getClassName}.${location.getMethodName}:${location.getLineNumber}$newline") + .append("Exception: ") + .append(location.toString) + .append(newline) + + if (stacktraceLength > 1) { + message.append(stacktrace.tail.filterNot { e => + IgnoredClassesInStack.forall(ignored => !e.getClassName.startsWith(ignored)) + } map { + _.toString + } mkString newline) + } + } + } + + message.toString + } + + private def logContext(message: StringBuilder, loggingEvent: ILoggingEvent) = { + Option(loggingEvent.getMDCPropertyMap).map(_.asScala).filter(_.nonEmpty).foreach { context => + message.append( + context map { case (key, value) => s"$key$FieldSeparator$value" } mkString ("Context: ", " ", newline) + ) + } + } + } } -- cgit v1.2.3