MetricsOps

org.http4s.metrics.MetricsOps$
See theMetricsOps companion trait
object MetricsOps

Attributes

Companion:
trait
Source:
MetricsOps.scala
Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Concise view

Value members

Concrete methods

def classifierFMethodWithOptionallyExcludedPath[F[_]](exclude: String => Boolean, excludedValue: String, pathSeparator: String): Request[F] => Option[String]

Given an exclude function, return a 'classifier' function, i.e. for application in org.http4s.server/client.middleware.Metrics#apply.

Given an exclude function, return a 'classifier' function, i.e. for application in org.http4s.server/client.middleware.Metrics#apply.

Let's say you want a classifier that excludes integers since your paths consist of:

  • GET /users/{integer} = GET_users_*
  • POST /users = POST_users
  • PUT /users/{integer} = PUT_users_*
  • DELETE /users/{integer} = DELETE_users_*

In such a case, we could use:

classifierFMethodWithOptionallyExcludedPath( exclude = { str: String => scala.util.Try(str.toInt).isSuccess }, excludedValue = "*", intercalateValue = "_" )

Chris Davenport notes the following on performance considerations of exclude's function value:

It's worth noting that this runs on every segment of a path. So note that if an intermediate Throwables with Stack traces is known and discarded, there may be a performance penalty, such as the above example with Try(str.toInt). I benchmarked some approaches and regex matches should generally be preferred over Throwable's in this position.

Attributes

exclude

For a given String, namely a path value, determine whether the value gets excluded.

excludedValue

Indicates the String value to be supplied for an excluded path's field.

pathSeparator

Value to use for separating the metrics fields' values

Returns:

Request[F] => Option[String]

Source:
MetricsOps.scala