diff options
author | Diego <diegolparra@gmail.com> | 2016-12-13 13:06:29 -0300 |
---|---|---|
committer | Diego <diegolparra@gmail.com> | 2016-12-13 13:06:29 -0300 |
commit | a74379942b2c672c9ba507093f27ead5693c1240 (patch) | |
tree | 1a22f1ae9080e4ec7496f0b5536107b35a5acd68 /kamon-examples/kamon-play-example/app/controllers/KamonPlayExample.scala | |
parent | ee7e2218f869eeea8be00441c82b5e6e8f4d99eb (diff) | |
download | Kamon-a74379942b2c672c9ba507093f27ead5693c1240.tar.gz Kamon-a74379942b2c672c9ba507093f27ead5693c1240.tar.bz2 Kamon-a74379942b2c672c9ba507093f27ead5693c1240.zip |
wip
Diffstat (limited to 'kamon-examples/kamon-play-example/app/controllers/KamonPlayExample.scala')
-rw-r--r-- | kamon-examples/kamon-play-example/app/controllers/KamonPlayExample.scala | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/kamon-examples/kamon-play-example/app/controllers/KamonPlayExample.scala b/kamon-examples/kamon-play-example/app/controllers/KamonPlayExample.scala new file mode 100644 index 00000000..3f368354 --- /dev/null +++ b/kamon-examples/kamon-play-example/app/controllers/KamonPlayExample.scala @@ -0,0 +1,83 @@ +/* =================================================== + * 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 controllers + +import filters.{TraceLocalContainer, TraceLocalKey} +import kamon.Kamon +import kamon.play.action.TraceName +import kamon.trace.TraceLocal +import play.api.Logger +import play.api.libs.concurrent.Execution.Implicits.defaultContext +import play.api.mvc.{Action, Controller} +import play.libs.Akka + +import scala.concurrent._ + +/** + * Run the following commands from console: + * + * aspectj-runner:run + * + * and finally testing: + * + * curl -i -H 'X-Trace-Token:kamon-test' -H 'MyTraceLocalStorageKey:extra-header' -X GET "http://localhost:9000/helloKamon" + * + * we should get: + * HTTP/1.1 200 OK + * Content-Type: text/plain; charset=utf-8 + * MyTraceLocalStorageKey: extra-header -> Extra Information + * X-Trace-Token: kamon-test -> default Trace-Token + * + * Say hello to Kamon + **/ +object KamonPlayExample extends Controller { + + val logger = Logger(this.getClass) + val counter = Kamon.metrics.counter("my-counter") + + def sayHello = Action.async { + Future { + logger.info("Say hello to Kamon") + Ok("Say hello to Kamon") + } + } + + //using the Kamon TraceName Action to rename the trace name in metrics + def sayHelloWithTraceName = TraceName("my-trace-name") { + Action.async { + Future { + logger.info("Say hello to Kamon with trace name") + Ok("Say hello to Kamon with trace name") + } + } + } + + def incrementCounter = Action.async { + Future { + logger.info("increment") + counter.increment() + Ok("increment") + } + } + + def updateTraceLocal = Action.async { + Future { + TraceLocal.store(TraceLocalKey)(TraceLocalContainer("MyTraceToken","MyImportantHeader")) + logger.info("storeInTraceLocal") + Ok("storeInTraceLocal") + } + } +} |