<types namespace="_logarithm">
  <record name="Config" desc="Options for the program.">
    <prop string name="app">
      The name of the website application.
    </prop>
    <prop string name="url">
      ElasticSearch endpoint URL, e.g., `http://192.168.0.1:9200`.
    </prop>
    <prop number name="timeout" default="5000">
      Timeout for the connection after which an error is shown.
    </prop>
    <prop string name="pipeline" default="info">
      The pipeline in ElasticSearch, for example to parse GeoIP info and User-Agent.
    </prop>
    <prop opt string name="index">
      The name of the index. Defaults to the app name if not specified.
    </prop>
    <fn return="string" name="strategy" opt>
      <arg string name="index">
        The general name of the index.
      </arg>
      <arg type="!Date" name="date">
        The date of the request.
      </arg>
      How to construct the index name. By default, monthly strategy is used: `${index}-${yyyy}.${mm}`.
    </fn>
  </record>
  <record name="Hit" desc="A record sent to ElasticSearch.">
    <prop string name="app">
      The application name from the config.
    </prop>
    <prop string name="ip">
      Client IP address.
    </prop>
    <prop string name="path">
      The decoded request path.
    </prop>
    <prop type="!Object" name="headers">
      The request headers.
    </prop>
    <prop number name="status">
      The status code.
    </prop>
    <prop type="!Date" name="date">
      The date of the request.
    </prop>
    <prop string name="method">
      The method of the request, e.g., `GET` or `POST`.
    </prop>
    <prop opt type="!Object" name="query">
      Possible query from the request.
    </prop>
  </record>
</types>