From 394206e0eeeea09f22d50a261f0c231dcf2975fc Mon Sep 17 00:00:00 2001 From: Diego Date: Fri, 27 Nov 2015 00:12:09 -0300 Subject: = all: some clean up in jdbc and annotation modules --- kamon-annotation/src/main/resources/reference.conf | 2 - .../kamon/annotation/AnnotationExtension.scala | 2 +- kamon-jdbc/src/main/scala/kamon/jdbc/Jdbc.scala | 79 ---------------------- .../src/main/scala/kamon/jdbc/JdbcExtension.scala | 78 +++++++++++++++++++++ .../instrumentation/StatementInstrumentation.scala | 4 +- 5 files changed, 80 insertions(+), 85 deletions(-) delete mode 100644 kamon-jdbc/src/main/scala/kamon/jdbc/Jdbc.scala create mode 100644 kamon-jdbc/src/main/scala/kamon/jdbc/JdbcExtension.scala diff --git a/kamon-annotation/src/main/resources/reference.conf b/kamon-annotation/src/main/resources/reference.conf index ccc57afe..b1080e8e 100644 --- a/kamon-annotation/src/main/resources/reference.conf +++ b/kamon-annotation/src/main/resources/reference.conf @@ -11,9 +11,7 @@ kamon { } modules { kamon-annotation { - auto-start = yes requires-aspectj = yes - extension-id = "kamon.annotation.AnnotationExtension" } } } diff --git a/kamon-annotation/src/main/scala/kamon/annotation/AnnotationExtension.scala b/kamon-annotation/src/main/scala/kamon/annotation/AnnotationExtension.scala index 21774865..e2723321 100644 --- a/kamon-annotation/src/main/scala/kamon/annotation/AnnotationExtension.scala +++ b/kamon-annotation/src/main/scala/kamon/annotation/AnnotationExtension.scala @@ -19,7 +19,7 @@ import kamon.Kamon import kamon.util.logger.LazyLogger object AnnotationExtension { - val log = LazyLogger("kamon.annotation.Annotation") + val log = LazyLogger("kamon.annotation.AnnotationExtension") val config = Kamon.config.getConfig("kamon.annotation") val arraySize = config.getInt("instruments-array-size") diff --git a/kamon-jdbc/src/main/scala/kamon/jdbc/Jdbc.scala b/kamon-jdbc/src/main/scala/kamon/jdbc/Jdbc.scala deleted file mode 100644 index eca3f89d..00000000 --- a/kamon-jdbc/src/main/scala/kamon/jdbc/Jdbc.scala +++ /dev/null @@ -1,79 +0,0 @@ -/* ========================================================================================= - * 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.jdbc - -import kamon.util.ConfigTools.Syntax - -import akka.actor._ -import kamon.Kamon - -object JdbcExtension { - val SegmentLibraryName = "jdbc" - - private val config = Kamon.config.getConfig("kamon.jdbc") - private val dynamic = new ReflectiveDynamicAccess(getClass.getClassLoader) - - private val nameGeneratorFQN = config.getString("name-generator") - private val nameGenerator: JdbcNameGenerator = dynamic.createInstanceFor[JdbcNameGenerator](nameGeneratorFQN, Nil).get - - private val slowQueryProcessorClass = config.getString("slow-query-processor") - private val slowQueryProcessor: SlowQueryProcessor = dynamic.createInstanceFor[SlowQueryProcessor](slowQueryProcessorClass, Nil).get - - private val sqlErrorProcessorClass = config.getString("sql-error-processor") - private val sqlErrorProcessor: SqlErrorProcessor = dynamic.createInstanceFor[SqlErrorProcessor](sqlErrorProcessorClass, Nil).get - - val slowQueryThreshold = config.getFiniteDuration("slow-query-threshold").toMillis - - def processSlowQuery(sql: String, executionTime: Long) = slowQueryProcessor.process(sql, executionTime, slowQueryThreshold) - def processSqlError(sql: String, ex: Throwable) = sqlErrorProcessor.process(sql, ex) - def generateJdbcSegmentName(statement: String): String = nameGenerator.generateJdbcSegmentName(statement) -} - -trait SlowQueryProcessor { - def process(sql: String, executionTime: Long, queryThreshold: Long): Unit -} - -trait SqlErrorProcessor { - def process(sql: String, ex: Throwable): Unit -} - -trait JdbcNameGenerator { - def generateJdbcSegmentName(statement: String): String -} - -class DefaultJdbcNameGenerator extends JdbcNameGenerator { - def generateJdbcSegmentName(statement: String): String = s"Jdbc[$statement]" -} - -class DefaultSqlErrorProcessor extends SqlErrorProcessor { - import org.slf4j.LoggerFactory - - val log = LoggerFactory.getLogger(classOf[DefaultSqlErrorProcessor]) - - override def process(sql: String, cause: Throwable): Unit = { - log.error(s"the query [$sql] failed with exception [${cause.getMessage}]") - } -} - -class DefaultSlowQueryProcessor extends SlowQueryProcessor { - import org.slf4j.LoggerFactory - - val log = LoggerFactory.getLogger(classOf[DefaultSlowQueryProcessor]) - - override def process(sql: String, executionTimeInMillis: Long, queryThresholdInMillis: Long): Unit = { - log.warn(s"The query [$sql] took $executionTimeInMillis ms and the slow query threshold is $queryThresholdInMillis ms") - } -} diff --git a/kamon-jdbc/src/main/scala/kamon/jdbc/JdbcExtension.scala b/kamon-jdbc/src/main/scala/kamon/jdbc/JdbcExtension.scala new file mode 100644 index 00000000..5904053d --- /dev/null +++ b/kamon-jdbc/src/main/scala/kamon/jdbc/JdbcExtension.scala @@ -0,0 +1,78 @@ +/* ========================================================================================= + * 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.jdbc + +import kamon.util.ConfigTools.Syntax + +import akka.actor._ +import kamon.Kamon +import kamon.util.logger.LazyLogger + +object JdbcExtension { + val log = LazyLogger("kamon.jdbc.JdbcExtension") + + val SegmentLibraryName = "jdbc" + + private val config = Kamon.config.getConfig("kamon.jdbc") + private val dynamic = new ReflectiveDynamicAccess(getClass.getClassLoader) + + private val nameGeneratorFQN = config.getString("name-generator") + private val nameGenerator: JdbcNameGenerator = dynamic.createInstanceFor[JdbcNameGenerator](nameGeneratorFQN, Nil).get + + private val slowQueryProcessorClass = config.getString("slow-query-processor") + private val slowQueryProcessor: SlowQueryProcessor = dynamic.createInstanceFor[SlowQueryProcessor](slowQueryProcessorClass, Nil).get + + private val sqlErrorProcessorClass = config.getString("sql-error-processor") + private val sqlErrorProcessor: SqlErrorProcessor = dynamic.createInstanceFor[SqlErrorProcessor](sqlErrorProcessorClass, Nil).get + + val slowQueryThreshold = config.getFiniteDuration("slow-query-threshold").toMillis + + def processSlowQuery(sql: String, executionTime: Long) = slowQueryProcessor.process(sql, executionTime, slowQueryThreshold) + def processSqlError(sql: String, ex: Throwable) = sqlErrorProcessor.process(sql, ex) + def generateJdbcSegmentName(statement: String): String = nameGenerator.generateJdbcSegmentName(statement) +} + +trait SlowQueryProcessor { + def process(sql: String, executionTime: Long, queryThreshold: Long): Unit +} + +trait SqlErrorProcessor { + def process(sql: String, ex: Throwable): Unit +} + +trait JdbcNameGenerator { + def generateJdbcSegmentName(statement: String): String +} + +class DefaultJdbcNameGenerator extends JdbcNameGenerator { + def generateJdbcSegmentName(statement: String): String = s"Jdbc[$statement]" +} + +class DefaultSqlErrorProcessor extends SqlErrorProcessor { + val log = LazyLogger(classOf[DefaultSqlErrorProcessor]) + + override def process(sql: String, cause: Throwable): Unit = { + log.error(s"the query [$sql] failed with exception [${cause.getMessage}]") + } +} + +class DefaultSlowQueryProcessor extends SlowQueryProcessor { + val log = LazyLogger(classOf[DefaultSlowQueryProcessor]) + + override def process(sql: String, executionTimeInMillis: Long, queryThresholdInMillis: Long): Unit = { + log.warn(s"The query [$sql] took $executionTimeInMillis ms and the slow query threshold is $queryThresholdInMillis ms") + } +} diff --git a/kamon-jdbc/src/main/scala/kamon/jdbc/instrumentation/StatementInstrumentation.scala b/kamon-jdbc/src/main/scala/kamon/jdbc/instrumentation/StatementInstrumentation.scala index 321ce398..8da5c223 100644 --- a/kamon-jdbc/src/main/scala/kamon/jdbc/instrumentation/StatementInstrumentation.scala +++ b/kamon-jdbc/src/main/scala/kamon/jdbc/instrumentation/StatementInstrumentation.scala @@ -23,7 +23,6 @@ import kamon.jdbc.metric.StatementsMetrics import kamon.trace.{ Tracer, TraceContext, SegmentCategory } import org.aspectj.lang.ProceedingJoinPoint import org.aspectj.lang.annotation.{ Around, Aspect, Pointcut } -import org.slf4j.LoggerFactory import scala.util.control.NonFatal @@ -52,7 +51,7 @@ class StatementInstrumentation { case UpdateStatement(_) ⇒ withSegment(ctx, Update)(recordWrite(pjp, sql)) case DeleteStatement(_) ⇒ withSegment(ctx, Delete)(recordWrite(pjp, sql)) case anythingElse ⇒ - log.debug(s"Unable to parse sql [$sql]") + JdbcExtension.log.debug(s"Unable to parse sql [$sql]") pjp.proceed() } } @@ -90,7 +89,6 @@ class StatementInstrumentation { } object StatementInstrumentation { - val log = LoggerFactory.getLogger(classOf[StatementInstrumentation]) val SelectStatement = "(?i)^\\s*select.*?\\sfrom[\\s\\[]+([^\\]\\s,)(;]*).*".r val InsertStatement = "(?i)^\\s*insert(?:\\s+ignore)?\\s+into\\s+([^\\s(,;]*).*".r -- cgit v1.2.3