diff options
author | Diego <diegolparra@gmail.com> | 2015-11-25 00:28:31 -0300 |
---|---|---|
committer | Diego <diegolparra@gmail.com> | 2015-11-25 00:28:31 -0300 |
commit | a49f4138630a459ca7bf7309f114cdfcbbda2598 (patch) | |
tree | 232ddb7c57b354c032d22379763d0100917aba37 /kamon-core/src/main/scala/kamon | |
parent | 5a26b2a6d14e97198c2a5251415493fb250330fc (diff) | |
download | Kamon-a49f4138630a459ca7bf7309f114cdfcbbda2598.tar.gz Kamon-a49f4138630a459ca7bf7309f114cdfcbbda2598.tar.bz2 Kamon-a49f4138630a459ca7bf7309f114cdfcbbda2598.zip |
! core: Decoupling basic apis from reporters in order to improve Kamon tooling for tests
Diffstat (limited to 'kamon-core/src/main/scala/kamon')
4 files changed, 61 insertions, 17 deletions
diff --git a/kamon-core/src/main/scala/kamon/Kamon.scala b/kamon-core/src/main/scala/kamon/Kamon.scala index 54050c18..e6b93459 100644 --- a/kamon-core/src/main/scala/kamon/Kamon.scala +++ b/kamon-core/src/main/scala/kamon/Kamon.scala @@ -1,5 +1,5 @@ /* ========================================================================================= - * Copyright © 2013-2014 the kamon project <http://kamon.io/> + * Copyright © 2013-2015 the kamon project <http://kamon.io/> * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License at @@ -19,10 +19,10 @@ import _root_.akka.actor._ import com.typesafe.config.{ Config, ConfigFactory } import kamon.metric._ import kamon.trace.TracerModuleImpl -import org.slf4j.LoggerFactory +import kamon.util.logger.LazyLogger object Kamon { - private val log = LoggerFactory.getLogger(getClass) + private val log = LazyLogger(getClass) trait Extension extends actor.Extension @@ -32,12 +32,13 @@ object Kamon { private lazy val _system = { val internalConfig = config.getConfig("kamon.internal-config") + val patchedConfig = config .withoutPath("akka") .withoutPath("spray") .withFallback(internalConfig) - log.info("Initializing KAMON DUUUDEEE") + log.info("Initializing Kamon...") ActorSystem("kamon", patchedConfig) } @@ -52,14 +53,9 @@ object Kamon { def shutdown(): Unit = { // TODO: Define what a proper shutdown should be like. + _system.shutdown() } - /* def apply[T <: Kamon.Extension](key: ExtensionId[T]): T = - key(_system) - - def extension[T <: Kamon.Extension](key: ExtensionId[T]): T = - apply(key)*/ - private def resolveConfiguration: Config = { val defaultConfig = ConfigFactory.load() diff --git a/kamon-core/src/main/scala/kamon/ModuleLoader.scala b/kamon-core/src/main/scala/kamon/ModuleLoader.scala index f240f6ce..a89af19e 100644 --- a/kamon-core/src/main/scala/kamon/ModuleLoader.scala +++ b/kamon-core/src/main/scala/kamon/ModuleLoader.scala @@ -18,10 +18,9 @@ package kamon import _root_.akka.actor import _root_.akka.actor._ -import _root_.akka.event.Logging +import kamon.util.logger.LazyLogger import org.aspectj.lang.ProceedingJoinPoint -import org.aspectj.lang.annotation.{ Around, Pointcut, Aspect } -import org.slf4j.LoggerFactory +import org.aspectj.lang.annotation.{Around, Aspect, Pointcut} private[kamon] object ModuleLoader extends ExtensionId[ModuleLoaderExtension] with ExtensionIdProvider { def lookup(): ExtensionId[_ <: actor.Extension] = ModuleLoader @@ -29,7 +28,7 @@ private[kamon] object ModuleLoader extends ExtensionId[ModuleLoaderExtension] wi } private[kamon] class ModuleLoaderExtension(system: ExtendedActorSystem) extends Kamon.Extension { - val log = LoggerFactory.getLogger(getClass) + val log = LazyLogger(getClass) val settings = ModuleLoaderSettings(system) if (settings.modulesRequiringAspectJ.nonEmpty && !isAspectJPresent && settings.showAspectJMissingWarning) @@ -42,7 +41,7 @@ private[kamon] class ModuleLoaderExtension(system: ExtendedActorSystem) extends system.dynamicAccess.getObjectFor[ExtensionId[Kamon.Extension]](extensionClass).map { moduleID ⇒ log.debug(s"Auto starting the [$name] module.") moduleID.get(system) - + } recover { case th: Throwable ⇒ log.error(s"Failed to auto start the [$name] module.", th) } diff --git a/kamon-core/src/main/scala/kamon/util/SameThreadExecutionContext.scala b/kamon-core/src/main/scala/kamon/util/SameThreadExecutionContext.scala index 2aae526f..5fb0d066 100644 --- a/kamon-core/src/main/scala/kamon/util/SameThreadExecutionContext.scala +++ b/kamon-core/src/main/scala/kamon/util/SameThreadExecutionContext.scala @@ -16,14 +16,14 @@ package kamon.util +import kamon.util.logger.LazyLogger import scala.concurrent.ExecutionContext -import org.slf4j.LoggerFactory /** * For small code blocks that don't need to be run on a separate thread. */ object SameThreadExecutionContext extends ExecutionContext { - val logger = LoggerFactory.getLogger("SameThreadExecutionContext") + val logger = LazyLogger("SameThreadExecutionContext") override def execute(runnable: Runnable): Unit = runnable.run override def reportFailure(t: Throwable): Unit = logger.error(t.getMessage, t) diff --git a/kamon-core/src/main/scala/kamon/util/logger/LazyLogger.scala b/kamon-core/src/main/scala/kamon/util/logger/LazyLogger.scala new file mode 100644 index 00000000..c70c316d --- /dev/null +++ b/kamon-core/src/main/scala/kamon/util/logger/LazyLogger.scala @@ -0,0 +1,49 @@ +/* ========================================================================================= + * Copyright © 2013-2015 the kamon project <http://kamon.io/> + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + * ========================================================================================= + */ + +package kamon.util.logger + +import org.slf4j.{ Logger ⇒ SLF4JLogger } + +class LazyLogger(val logger: SLF4JLogger) { + + @inline final def isTraceEnabled = logger.isTraceEnabled + @inline final def trace(msg: ⇒ String): Unit = if (isTraceEnabled) logger.trace(msg.toString) + @inline final def trace(msg: ⇒ String, t: ⇒ Throwable): Unit = if (isTraceEnabled) logger.trace(msg, t) + + @inline final def isDebugEnabled = logger.isDebugEnabled + @inline final def debug(msg: ⇒ String): Unit = if (isDebugEnabled) logger.debug(msg.toString) + @inline final def debug(msg: ⇒ String, t: ⇒ Throwable): Unit = if (isDebugEnabled) logger.debug(msg, t) + + @inline final def isErrorEnabled = logger.isErrorEnabled + @inline final def error(msg: ⇒ String): Unit = if (isErrorEnabled) logger.error(msg.toString) + @inline final def error(msg: ⇒ String, t: ⇒ Throwable): Unit = if (isErrorEnabled) logger.error(msg, t) + + @inline final def isInfoEnabled = logger.isInfoEnabled + @inline final def info(msg: ⇒ String): Unit = if (isInfoEnabled) logger.info(msg.toString) + @inline final def info(msg: ⇒ String, t: ⇒ Throwable): Unit = if (isInfoEnabled) logger.info(msg, t) + + @inline final def isWarnEnabled = logger.isWarnEnabled + @inline final def warn(msg: ⇒ String): Unit = if (isWarnEnabled) logger.warn(msg.toString) + @inline final def warn(msg: ⇒ String, t: ⇒ Throwable): Unit = if (isWarnEnabled) logger.warn(msg, t) +} + +object LazyLogger { + import scala.reflect.{ classTag, ClassTag } + + def apply(name: String): LazyLogger = new LazyLogger(org.slf4j.LoggerFactory.getLogger(name)) + def apply(cls: Class[_]): LazyLogger = apply(cls.getName) + def apply[C: ClassTag](): LazyLogger = apply(classTag[C].runtimeClass.getName) +}
\ No newline at end of file |