diff options
author | adelio <adelio@despegar.com> | 2014-04-30 13:07:24 -0300 |
---|---|---|
committer | Diego <diegolparra@gmail.com> | 2014-05-01 19:49:51 -0300 |
commit | 6e22e6ed4018e7a667f3570186e25c0ca8b6d68d (patch) | |
tree | 575f591d62d31aa79074299e84c42f0e09c4e4ae /kamon-newrelic/src | |
parent | 80f8a5d0b3a6c936453645254c1349b9691b1df2 (diff) | |
download | Kamon-6e22e6ed4018e7a667f3570186e25c0ca8b6d68d.tar.gz Kamon-6e22e6ed4018e7a667f3570186e25c0ca8b6d68d.tar.bz2 Kamon-6e22e6ed4018e7a667f3570186e25c0ca8b6d68d.zip |
= newrelic: fix ClassCastException in NewRelicErrorLogger
when not using aspectJ weaver, fixes #29
Diffstat (limited to 'kamon-newrelic/src')
-rw-r--r-- | kamon-newrelic/src/main/scala/kamon/newrelic/NewRelicErrorLogger.scala | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/kamon-newrelic/src/main/scala/kamon/newrelic/NewRelicErrorLogger.scala b/kamon-newrelic/src/main/scala/kamon/newrelic/NewRelicErrorLogger.scala index 0f177b9e..4203f81f 100644 --- a/kamon-newrelic/src/main/scala/kamon/newrelic/NewRelicErrorLogger.scala +++ b/kamon-newrelic/src/main/scala/kamon/newrelic/NewRelicErrorLogger.scala @@ -15,13 +15,15 @@ * ========================================================== */ package kamon.newrelic -import akka.actor.Actor +import akka.actor.{ ActorLogging, Actor } import akka.event.Logging.Error import akka.event.Logging.{ LoggerInitialized, InitializeLogger } import com.newrelic.api.agent.{ NewRelic ⇒ NR } import kamon.trace.TraceContextAware -class NewRelicErrorLogger extends Actor { +class NewRelicErrorLogger extends Actor with ActorLogging { + var aspectJMissingAlreadyReported = false + def receive = { case InitializeLogger(_) ⇒ sender ! LoggerInitialized case error @ Error(cause, logSource, logClass, message) ⇒ notifyError(error) @@ -30,10 +32,17 @@ class NewRelicErrorLogger extends Actor { def notifyError(error: Error): Unit = { val params = new java.util.HashMap[String, String]() - val ctx = error.asInstanceOf[TraceContextAware].traceContext - for (c ← ctx) { - params.put("TraceToken", c.token) + if (error.isInstanceOf[TraceContextAware]) { + val ctx = error.asInstanceOf[TraceContextAware].traceContext + + for (c ← ctx) { + params.put("TraceToken", c.token) + } + } else if (!aspectJMissingAlreadyReported) { + log.warning("ASPECTJ WEAVER MISSING. You might have missed to include the javaagent JVM startup parameter in" + + " your application. Please refer to http://kamon.io/get-started/ for instructions on how to do it.") + aspectJMissingAlreadyReported = true } if (error.cause == Error.NoCause) { |