- DESCRIPTION
- CONFIGURATION
  - `log_to`
  - `log_as`
  - `trace_to`
  - `trace_as`
- METHODS
  - `log_handle()`
  - `trace_handle()`
  - `trace_request()`
  - `trace_response()`
  - `trace_error()`
  - `trace_comment()`

# DESCRIPTION

This role provides common functionality to Logger implementations, to enable the logging of events and the tracing of request-response conversations with Elasticsearch nodes.

See Elasticsearch::Logger::LogAny for the default implementation.

# CONFIGURATION

## `log_to`

Parameters passed to `log_to` are used by Elasticsearch::Role::Logger implementations to setup the "log_handle()". See "log_to" in Elasticsearch::Logger::LogAny for details.

## `log_as`

By default, events emitted by "debug()", "info()", "warning()", "error()" and "critical()" are logged to the "log_handle()" under the category `"elasticsearch.event"`, which can be configured with `log_as`.

## `trace_to`

Parameters passed to `trace_to` are used by Elasticsearch::Role::Logger implementations to setup the "trace_handle()". See "trace_to" in Elasticsearch::Logger::LogAny for details.

## `trace_as`

By default, trace output emitted by "trace_request()", "trace_response()", "trace_error()" and "trace_comment()" are logged under the category `elasticsearch.trace`, which can be configured with `trace_as`.

# METHODS

## `log_handle()`

Returns an object which can handle the methods: `debug()`, `debugf()`, `is_debug()`, `info()`, `infof()`, `is_info()`, `warning()`, `warningf()`, `is_warning()`, `error()`, `errorf()`, `is_error()`, `critical()`, `criticalf()` and `is_critical()`.

## `trace_handle()`

Returns an object which can handle the methods: `trace()`, `tracef()` and `is_trace()`.

## `trace_request()`

        $logger->trace_request($cxn,\%request);

Accepts a Cxn object and request parameters and logs them if tracing is enabled.

## `trace_response()`

        $logger->trace_response($cxn,$code,$response,$took);

Logs a successful HTTP response, where `$code` is the HTTP status code, `$response` is the HTTP body and `$took` is the time the request took in seconds

## `trace_error()`

        $logger->trace_error($cxn,$error);

Logs a failed HTTP response, where `$error` is an Elasticsearch::Error object.

## `trace_comment()`

        $logger->trace_comment($comment);

Used to insert debugging comments into trace output.