From cc079f18a2c00678397fae0714eb524dfe8961f2 Mon Sep 17 00:00:00 2001 From: Diego Date: Sat, 15 Mar 2014 11:21:44 -0300 Subject: implementation of IMessageHandler interface in order to control Aspectj weaving messages through kamon --- .../weaver/logging/KamonWeaverMessageHandler.scala | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 kamon-core/src/main/scala/kamon/weaver/logging/KamonWeaverMessageHandler.scala (limited to 'kamon-core/src/main/scala/kamon') diff --git a/kamon-core/src/main/scala/kamon/weaver/logging/KamonWeaverMessageHandler.scala b/kamon-core/src/main/scala/kamon/weaver/logging/KamonWeaverMessageHandler.scala new file mode 100644 index 00000000..1aa0aae0 --- /dev/null +++ b/kamon-core/src/main/scala/kamon/weaver/logging/KamonWeaverMessageHandler.scala @@ -0,0 +1,58 @@ +/* + * ========================================================================================= + * Copyright © 2013-2014 the kamon project + * + * 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.weaver.logging + +import org.aspectj.bridge.{ IMessage, IMessageHandler } +import org.slf4j.LoggerFactory +import com.typesafe.config.ConfigFactory + +class KamonWeaverMessageHandler extends IMessageHandler { + import IMessage._ + + private val log = LoggerFactory.getLogger("AspectJ Weaver") + private val conf = ConfigFactory.load().getConfig("kamon.weaver") + + private val isVerbose = conf.getBoolean("verbose") + private val isDebug = conf.getBoolean("debug") + private val showWeaveInfo = conf.getBoolean("showWeaveInfo") + private val showWarn = conf.getBoolean("showWarn") + + def handleMessage(message: IMessage) = message.getKind match { + case WEAVEINFO if showWeaveInfo ⇒ showMessage(message) + case DEBUG if isDebug ⇒ showMessage(message) + case WARNING if showWarn ⇒ showMessage(message) + case DEBUG if isDebug ⇒ showMessage(message) + case INFO if isVerbose ⇒ showMessage(message) + case ERROR ⇒ showErrorMessage(message) + case _ ⇒ false + } + + def isIgnoring(kind: IMessage.Kind): Boolean = false // We want to see everything. + def dontIgnore(kind: IMessage.Kind) = {} + def ignore(kind: IMessage.Kind) = {} + + private def showMessage(msg: IMessage): Boolean = { + log.info(msg.getMessage) + true + } + + private def showErrorMessage(msg: IMessage): Boolean = { + log.error(msg.getMessage) + true + } +} + -- cgit v1.2.3