MetricsOps

object MetricsOps
Companion
class
class Object
trait Matchable
class Any

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.

Value Params
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]