Docs
Plugin HubCategoriesObservabilityLoki LoggerConfiguration

Loki Logger Configuration

Configuration reference for the Loki Logger plugin (`loki-logger`): the parameters and plugin metadata, each attribute with its type, whether it is required, its default and its accepted values.

Parameters

See plugin common configurations (opens in Apache APISIX docs) for configuration options available to all plugins.

endpoint_addrs — array[string] · required · since APISIX 3.4.0 · API7 Gateway 3.4.0

Loki API base URLs, such as http://127.0.0.1:3100. If multiple endpoints are configured, the log will be pushed to a randomly determined endpoint from the list.

endpoint_uri — string · optional · default: /loki/api/v1/push · since APISIX 3.4.0 · API7 Gateway 3.4.0

URI path to the Loki ingest endpoint.

tenant_id — string · optional · default: fake · since APISIX 3.4.0 · API7 Gateway 3.4.0

Loki tenant ID. According to Loki's multi-tenancy documentation, the default value is set to fake under single-tenancy.

headers — object · optional · since APISIX 3.13.0 · API7 Gateway 3.9.0

Key-value pairs of request headers, such as the Authorization header for non-local Loki services. The parameter cannot set X-Scope-OrgID or Content-Type. Introduced in API7 Enterprise 3.9.0. Header-value encryption was introduced in API7 Enterprise 3.9.18 and 3.10.5, and APISIX 3.18.0. The values are encrypted before storage (opens in Apache APISIX docs) when data encryption is enabled. Authorized Admin API GET requests return the complete decrypted header object; encryption at rest does not redact header names or values from API responses.

log_labels — object · optional · default: {job = "apisix"} · since APISIX 3.4.0 · API7 Gateway 3.4.0

Loki log label. Support built-in variables (opens in Apache APISIX docs) and constant strings in values. Variables should be prefixed with a $ sign. For example, the label can be {"origin" = "apisix"} or {"origin" = "$remote_addr"}.

ssl_verify — boolean · optional · default: false · since APISIX 3.4.0 · API7 Gateway 3.4.0

If true, verify Loki's SSL certificates.

timeout — integer · optional · default: 3000 · since APISIX 3.4.0 · API7 Gateway 3.4.0

Valid values: between 1 and 60000 inclusive

Timeout for the Loki service HTTP call in milliseconds.

keepalive — boolean · optional · default: true · since APISIX 3.4.0 · API7 Gateway 3.4.0

If true, keep the connection alive for multiple requests.

keepalive_timeout — integer · optional · default: 60000 · since APISIX 3.4.0 · API7 Gateway 3.4.0

Valid values: greater than or equal to 1000

Keepalive timeout in milliseconds.

keepalive_pool — integer · optional · default: 5 · since APISIX 3.4.0 · API7 Gateway 3.4.0

Valid values: greater than or equal to 1

Maximum number of connections in the connection pool.

log_format — object · optional · since APISIX 3.4.0 · API7 Gateway 3.4.0

Custom log format using key-value pairs in JSON format. Values can reference built-in variables (opens in Apache APISIX docs).

In APISIX from 3.15.0, log format nested structures are supported up to five levels deep. In API7 Enterprise, only flat key-value structures are supported; nested structures are not yet supported.

You can also configure log format on a global scale using the plugin metadata (opens in Apache APISIX docs), which configures the log format for all loki-logger plugin instances. If the log format configured on the individual plugin instance differs from the log format configured on plugin metadata, the log format configured on the individual plugin instance takes precedence. See this example for more details.

log_format_extra — object · optional · since APISIX 3.18.0 · API7 Gateway 3.9.15

Additional fields to add to the default log entry, using key-value pairs in JSON format. Values can reference built-in variables (opens in Apache APISIX docs). A configured field does not overwrite an existing default field. A plugin instance takes precedence over plugin metadata; setting an empty object on the instance disables the metadata value. When log_format is configured, log_format_extra is ignored. Introduced in API7 Enterprise 3.9.15 and 3.10.2, and APISIX 3.18.0.

name — string · optional · default: loki logger · since APISIX 3.4.0 · API7 Gateway 3.8.6

Unique identifier of the plugin for the batch processor. If you use Prometheus to monitor APISIX metrics, the name is exported in apisix_batch_process_entries.

include_req_body — boolean · optional · default: false · since APISIX 3.4.0 · API7 Gateway 3.4.0

If true, include the request body in the log. Note that if the request body is too big to be kept in the memory, it can not be logged due to NGINX's limitations.

include_req_body_expr — array[array] · optional · since APISIX 3.4.0 · API7 Gateway 3.4.0

An array of one or more conditions in the form of APISIX expressions (opens in Apache APISIX docs). Used when the include_req_body is true. Request body would only be logged when the expressions configured here evaluate to true.

include_resp_body — boolean · optional · default: false · since APISIX 3.4.0 · API7 Gateway 3.4.0

If true, include the response body in the log.

include_resp_body_expr — array[array] · optional · since APISIX 3.4.0 · API7 Gateway 3.4.0

An array of one or more conditions in the form of APISIX expressions (opens in Apache APISIX docs). Used when the include_resp_body is true. Response body would only be logged when the expressions configured here evaluate to true.

max_req_body_bytes — integer · optional · default: 524288 · since APISIX 3.16.0 · API7 Gateway 3.9.17

Valid values: greater than or equal to 1

Maximum request body size in bytes to include in the log. If the request body exceeds this value, it will be truncated. Available in APISIX from 3.16.0.

max_resp_body_bytes — integer · optional · default: 524288 · since APISIX 3.16.0 · API7 Gateway 3.9.17

Valid values: greater than or equal to 1

Maximum response body size in bytes to include in the log. If the response body exceeds this value, it will be truncated. Available in APISIX from 3.16.0.

batch_max_size — integer · optional · default: 1000 · since APISIX 3.4.0 · API7 Gateway 3.8.6

Valid values: greater than 0

The number of log entries allowed in one batch. Once reached, the batch will be sent to the logging service. Setting this parameter to 1 means immediate processing.

inactive_timeout — integer · optional · default: 5 · since APISIX 3.4.0 · API7 Gateway 3.8.6

Valid values: greater than 0

The maximum time in seconds to wait for new logs before sending the batch to the logging service. The value should be smaller than buffer_duration.

buffer_duration — integer · optional · default: 60 · since APISIX 3.4.0 · API7 Gateway 3.8.6

Valid values: greater than 0

The maximum time in seconds from the earliest entry allowed before sending the batch to the logging service.

retry_delay — integer · optional · default: 1 · since APISIX 3.4.0 · API7 Gateway 3.8.6

Valid values: greater than or equal to 0

The time interval in seconds to retry sending the batch to the logging service if the batch was not successfully sent.

max_retry_count — integer · optional · default: 0 · since APISIX 3.4.0 · API7 Gateway 3.8.6

Valid values: greater than or equal to 0

The maximum number of unsuccessful retries allowed before dropping the log entries.

Plugin Metadata

log_format — object · optional · since APISIX 3.4.0 · API7 Gateway 3.4.0

Custom log format using key-value pairs in JSON format. Values can reference built-in variables (opens in Apache APISIX docs).

In APISIX from 3.15.0, log format nested structures are supported up to five levels deep. In API7 Enterprise, only flat key-value structures are supported; nested structures are not yet supported.

log_format_extra — object · optional · since APISIX 3.18.0 · API7 Gateway 3.9.15

Additional fields to add to the default log entry, using key-value pairs in JSON format. Values can reference built-in variables (opens in Apache APISIX docs). A configured field does not overwrite an existing default field. A plugin instance takes precedence over plugin metadata; setting an empty object on the instance disables the metadata value. When log_format is configured, log_format_extra is ignored. Introduced in API7 Enterprise 3.9.15 and 3.10.2, and APISIX 3.18.0.

max_pending_entries — integer · optional · default: 8192 in APISIX 3.18.0 and in API7 Enterprise 3.9.19 and 3.10.6; none in API7 Enterprise 3.9.18 and 3.10.5 · since APISIX 3.15.0 · API7 Gateway 3.8.17

Valid values: greater than or equal to 1

Maximum number of entries waiting in the batch processor. New entries are discarded when the backlog reaches the limit.

Introduced in API7 Enterprise 3.8.17 and APISIX 3.15.0.

The default changed to 8192 in APISIX 3.18.0 and in API7 Enterprise 3.9.19 on the 3.9 line and 3.10.6 on the 3.10 line. In API7 Enterprise 3.9.18 and 3.10.5, and in earlier APISIX versions, omitting the parameter leaves the backlog unlimited.

See Batch Processor (opens in Apache APISIX docs) for sizing and verification guidance.