.. _envoy_v3_api_file_envoy/config/accesslog/v3/accesslog.proto:

Common access log types (proto)
===============================






.. _envoy_v3_api_msg_config.accesslog.v3.AccessLog:

config.accesslog.v3.AccessLog
-----------------------------


:repo:`[config.accesslog.v3.AccessLog proto] <api/envoy/config/accesslog/v3/accesslog.proto#L25>`




.. code-block:: json
  :force:

  {
    "name": ...,
    "filter": {...},
    "typed_config": {...}
  }

.. _envoy_v3_api_field_config.accesslog.v3.AccessLog.name:


name
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) The name of the access log extension configuration.


.. _envoy_v3_api_field_config.accesslog.v3.AccessLog.filter:


filter
  (:ref:`config.accesslog.v3.AccessLogFilter <envoy_v3_api_msg_config.accesslog.v3.AccessLogFilter>`) Filter which is used to determine if the access log needs to be written.


.. _envoy_v3_api_field_config.accesslog.v3.AccessLog.typed_config:


typed_config
  (`Any <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#any>`_) 
  Custom configuration that must be set according to the access logger extension being instantiated.


  .. _extension_category_envoy.access_loggers:

  .. tip::

    This extension category has the following known extensions:


    - :ref:`envoy.access_loggers.file <extension_envoy.access_loggers.file>`

    - :ref:`envoy.access_loggers.fluentd <extension_envoy.access_loggers.fluentd>`

    - :ref:`envoy.access_loggers.http_grpc <extension_envoy.access_loggers.http_grpc>`

    - :ref:`envoy.access_loggers.open_telemetry <extension_envoy.access_loggers.open_telemetry>`

    - :ref:`envoy.access_loggers.stderr <extension_envoy.access_loggers.stderr>`

    - :ref:`envoy.access_loggers.stdout <extension_envoy.access_loggers.stdout>`

    - :ref:`envoy.access_loggers.tcp_grpc <extension_envoy.access_loggers.tcp_grpc>`

    - :ref:`envoy.access_loggers.wasm <extension_envoy.access_loggers.wasm>`






.. _envoy_v3_api_msg_config.accesslog.v3.AccessLogFilter:

config.accesslog.v3.AccessLogFilter
-----------------------------------


:repo:`[config.accesslog.v3.AccessLogFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L47>`




.. code-block:: json
  :force:

  {
    "status_code_filter": {...},
    "duration_filter": {...},
    "not_health_check_filter": {...},
    "traceable_filter": {...},
    "runtime_filter": {...},
    "and_filter": {...},
    "or_filter": {...},
    "header_filter": {...},
    "response_flag_filter": {...},
    "grpc_status_filter": {...},
    "extension_filter": {...},
    "metadata_filter": {...},
    "log_type_filter": {...}
  }

.. _envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter:


status_code_filter
  (:ref:`config.accesslog.v3.StatusCodeFilter <envoy_v3_api_msg_config.accesslog.v3.StatusCodeFilter>`) Status code filter.


  

  Precisely one of :ref:`status_code_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter>`, :ref:`duration_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter>`, :ref:`not_health_check_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter>`, :ref:`traceable_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter>`, :ref:`runtime_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter>`, :ref:`and_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter>`, :ref:`or_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter>`, :ref:`header_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter>`, :ref:`response_flag_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter>`, :ref:`grpc_status_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter>`, :ref:`extension_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter>`, :ref:`metadata_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter>`, :ref:`log_type_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter>` must be set.

.. _envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter:


duration_filter
  (:ref:`config.accesslog.v3.DurationFilter <envoy_v3_api_msg_config.accesslog.v3.DurationFilter>`) Duration filter.


  

  Precisely one of :ref:`status_code_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter>`, :ref:`duration_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter>`, :ref:`not_health_check_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter>`, :ref:`traceable_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter>`, :ref:`runtime_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter>`, :ref:`and_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter>`, :ref:`or_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter>`, :ref:`header_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter>`, :ref:`response_flag_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter>`, :ref:`grpc_status_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter>`, :ref:`extension_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter>`, :ref:`metadata_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter>`, :ref:`log_type_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter>` must be set.

.. _envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter:


not_health_check_filter
  (:ref:`config.accesslog.v3.NotHealthCheckFilter <envoy_v3_api_msg_config.accesslog.v3.NotHealthCheckFilter>`) Not health check filter.


  

  Precisely one of :ref:`status_code_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter>`, :ref:`duration_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter>`, :ref:`not_health_check_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter>`, :ref:`traceable_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter>`, :ref:`runtime_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter>`, :ref:`and_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter>`, :ref:`or_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter>`, :ref:`header_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter>`, :ref:`response_flag_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter>`, :ref:`grpc_status_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter>`, :ref:`extension_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter>`, :ref:`metadata_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter>`, :ref:`log_type_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter>` must be set.

.. _envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter:


traceable_filter
  (:ref:`config.accesslog.v3.TraceableFilter <envoy_v3_api_msg_config.accesslog.v3.TraceableFilter>`) Traceable filter.


  

  Precisely one of :ref:`status_code_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter>`, :ref:`duration_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter>`, :ref:`not_health_check_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter>`, :ref:`traceable_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter>`, :ref:`runtime_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter>`, :ref:`and_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter>`, :ref:`or_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter>`, :ref:`header_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter>`, :ref:`response_flag_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter>`, :ref:`grpc_status_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter>`, :ref:`extension_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter>`, :ref:`metadata_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter>`, :ref:`log_type_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter>` must be set.

.. _envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter:


runtime_filter
  (:ref:`config.accesslog.v3.RuntimeFilter <envoy_v3_api_msg_config.accesslog.v3.RuntimeFilter>`) Runtime filter.


  

  Precisely one of :ref:`status_code_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter>`, :ref:`duration_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter>`, :ref:`not_health_check_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter>`, :ref:`traceable_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter>`, :ref:`runtime_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter>`, :ref:`and_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter>`, :ref:`or_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter>`, :ref:`header_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter>`, :ref:`response_flag_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter>`, :ref:`grpc_status_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter>`, :ref:`extension_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter>`, :ref:`metadata_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter>`, :ref:`log_type_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter>` must be set.

.. _envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter:


and_filter
  (:ref:`config.accesslog.v3.AndFilter <envoy_v3_api_msg_config.accesslog.v3.AndFilter>`) And filter.


  

  Precisely one of :ref:`status_code_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter>`, :ref:`duration_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter>`, :ref:`not_health_check_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter>`, :ref:`traceable_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter>`, :ref:`runtime_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter>`, :ref:`and_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter>`, :ref:`or_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter>`, :ref:`header_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter>`, :ref:`response_flag_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter>`, :ref:`grpc_status_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter>`, :ref:`extension_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter>`, :ref:`metadata_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter>`, :ref:`log_type_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter>` must be set.

.. _envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter:


or_filter
  (:ref:`config.accesslog.v3.OrFilter <envoy_v3_api_msg_config.accesslog.v3.OrFilter>`) Or filter.


  

  Precisely one of :ref:`status_code_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter>`, :ref:`duration_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter>`, :ref:`not_health_check_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter>`, :ref:`traceable_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter>`, :ref:`runtime_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter>`, :ref:`and_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter>`, :ref:`or_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter>`, :ref:`header_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter>`, :ref:`response_flag_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter>`, :ref:`grpc_status_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter>`, :ref:`extension_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter>`, :ref:`metadata_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter>`, :ref:`log_type_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter>` must be set.

.. _envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter:


header_filter
  (:ref:`config.accesslog.v3.HeaderFilter <envoy_v3_api_msg_config.accesslog.v3.HeaderFilter>`) Header filter.


  

  Precisely one of :ref:`status_code_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter>`, :ref:`duration_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter>`, :ref:`not_health_check_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter>`, :ref:`traceable_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter>`, :ref:`runtime_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter>`, :ref:`and_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter>`, :ref:`or_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter>`, :ref:`header_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter>`, :ref:`response_flag_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter>`, :ref:`grpc_status_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter>`, :ref:`extension_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter>`, :ref:`metadata_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter>`, :ref:`log_type_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter>` must be set.

.. _envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter:


response_flag_filter
  (:ref:`config.accesslog.v3.ResponseFlagFilter <envoy_v3_api_msg_config.accesslog.v3.ResponseFlagFilter>`) Response flag filter.


  

  Precisely one of :ref:`status_code_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter>`, :ref:`duration_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter>`, :ref:`not_health_check_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter>`, :ref:`traceable_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter>`, :ref:`runtime_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter>`, :ref:`and_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter>`, :ref:`or_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter>`, :ref:`header_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter>`, :ref:`response_flag_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter>`, :ref:`grpc_status_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter>`, :ref:`extension_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter>`, :ref:`metadata_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter>`, :ref:`log_type_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter>` must be set.

.. _envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter:


grpc_status_filter
  (:ref:`config.accesslog.v3.GrpcStatusFilter <envoy_v3_api_msg_config.accesslog.v3.GrpcStatusFilter>`) gRPC status filter.


  

  Precisely one of :ref:`status_code_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter>`, :ref:`duration_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter>`, :ref:`not_health_check_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter>`, :ref:`traceable_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter>`, :ref:`runtime_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter>`, :ref:`and_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter>`, :ref:`or_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter>`, :ref:`header_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter>`, :ref:`response_flag_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter>`, :ref:`grpc_status_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter>`, :ref:`extension_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter>`, :ref:`metadata_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter>`, :ref:`log_type_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter>` must be set.

.. _envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter:


extension_filter
  (:ref:`config.accesslog.v3.ExtensionFilter <envoy_v3_api_msg_config.accesslog.v3.ExtensionFilter>`) Extension filter.


  .. _extension_category_envoy.access_loggers.extension_filters:

  .. tip::

    This extension category has the following known extensions:


    - :ref:`envoy.access_loggers.extension_filters.cel <extension_envoy.access_loggers.extension_filters.cel>`





  

  Precisely one of :ref:`status_code_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter>`, :ref:`duration_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter>`, :ref:`not_health_check_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter>`, :ref:`traceable_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter>`, :ref:`runtime_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter>`, :ref:`and_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter>`, :ref:`or_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter>`, :ref:`header_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter>`, :ref:`response_flag_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter>`, :ref:`grpc_status_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter>`, :ref:`extension_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter>`, :ref:`metadata_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter>`, :ref:`log_type_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter>` must be set.

.. _envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter:


metadata_filter
  (:ref:`config.accesslog.v3.MetadataFilter <envoy_v3_api_msg_config.accesslog.v3.MetadataFilter>`) Metadata Filter


  

  Precisely one of :ref:`status_code_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter>`, :ref:`duration_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter>`, :ref:`not_health_check_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter>`, :ref:`traceable_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter>`, :ref:`runtime_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter>`, :ref:`and_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter>`, :ref:`or_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter>`, :ref:`header_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter>`, :ref:`response_flag_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter>`, :ref:`grpc_status_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter>`, :ref:`extension_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter>`, :ref:`metadata_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter>`, :ref:`log_type_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter>` must be set.

.. _envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter:


log_type_filter
  (:ref:`config.accesslog.v3.LogTypeFilter <envoy_v3_api_msg_config.accesslog.v3.LogTypeFilter>`) Log Type Filter


  

  Precisely one of :ref:`status_code_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.status_code_filter>`, :ref:`duration_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.duration_filter>`, :ref:`not_health_check_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.not_health_check_filter>`, :ref:`traceable_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.traceable_filter>`, :ref:`runtime_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.runtime_filter>`, :ref:`and_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.and_filter>`, :ref:`or_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.or_filter>`, :ref:`header_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.header_filter>`, :ref:`response_flag_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.response_flag_filter>`, :ref:`grpc_status_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.grpc_status_filter>`, :ref:`extension_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.extension_filter>`, :ref:`metadata_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.metadata_filter>`, :ref:`log_type_filter <envoy_v3_api_field_config.accesslog.v3.AccessLogFilter.log_type_filter>` must be set.


.. _envoy_v3_api_msg_config.accesslog.v3.ComparisonFilter:

config.accesslog.v3.ComparisonFilter
------------------------------------


:repo:`[config.accesslog.v3.ComparisonFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L97>`

Filter on an integer comparison.



.. code-block:: json
  :force:

  {
    "op": ...,
    "value": {...}
  }

.. _envoy_v3_api_field_config.accesslog.v3.ComparisonFilter.op:


op
  (:ref:`config.accesslog.v3.ComparisonFilter.Op <envoy_v3_api_enum_config.accesslog.v3.ComparisonFilter.Op>`) Comparison operator.


.. _envoy_v3_api_field_config.accesslog.v3.ComparisonFilter.value:


value
  (:ref:`config.core.v3.RuntimeUInt32 <envoy_v3_api_msg_config.core.v3.RuntimeUInt32>`, *REQUIRED*) Value to compare against.


.. _envoy_v3_api_enum_config.accesslog.v3.ComparisonFilter.Op:

Enum config.accesslog.v3.ComparisonFilter.Op
--------------------------------------------


:repo:`[config.accesslog.v3.ComparisonFilter.Op proto] <api/envoy/config/accesslog/v3/accesslog.proto#L101>`




.. _envoy_v3_api_enum_value_config.accesslog.v3.ComparisonFilter.Op.EQ:


EQ
  *(DEFAULT)* ⁣=


.. _envoy_v3_api_enum_value_config.accesslog.v3.ComparisonFilter.Op.GE:


GE
  ⁣>=


.. _envoy_v3_api_enum_value_config.accesslog.v3.ComparisonFilter.Op.LE:


LE
  ⁣<=




.. _envoy_v3_api_msg_config.accesslog.v3.StatusCodeFilter:

config.accesslog.v3.StatusCodeFilter
------------------------------------


:repo:`[config.accesslog.v3.StatusCodeFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L120>`

Filters on HTTP response/status code.



.. code-block:: json
  :force:

  {
    "comparison": {...}
  }

.. _envoy_v3_api_field_config.accesslog.v3.StatusCodeFilter.comparison:


comparison
  (:ref:`config.accesslog.v3.ComparisonFilter <envoy_v3_api_msg_config.accesslog.v3.ComparisonFilter>`, *REQUIRED*) Comparison.



.. _envoy_v3_api_msg_config.accesslog.v3.DurationFilter:

config.accesslog.v3.DurationFilter
----------------------------------


:repo:`[config.accesslog.v3.DurationFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L132>`

Filters based on the duration of the request or stream, in milliseconds.
For end of stream access logs, the total duration of the stream will be used.
For :ref:`periodic access logs<arch_overview_access_log_periodic>`,
the duration of the stream at the time of log recording will be used.



.. code-block:: json
  :force:

  {
    "comparison": {...}
  }

.. _envoy_v3_api_field_config.accesslog.v3.DurationFilter.comparison:


comparison
  (:ref:`config.accesslog.v3.ComparisonFilter <envoy_v3_api_msg_config.accesslog.v3.ComparisonFilter>`, *REQUIRED*) Comparison.



.. _envoy_v3_api_msg_config.accesslog.v3.NotHealthCheckFilter:

config.accesslog.v3.NotHealthCheckFilter
----------------------------------------


:repo:`[config.accesslog.v3.NotHealthCheckFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L142>`

Filters for requests that are not health check requests. A health check
request is marked by the health check filter.





.. _envoy_v3_api_msg_config.accesslog.v3.TraceableFilter:

config.accesslog.v3.TraceableFilter
-----------------------------------


:repo:`[config.accesslog.v3.TraceableFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L149>`

Filters for requests that are traceable. See the tracing overview for more
information on how a request becomes traceable.





.. _envoy_v3_api_msg_config.accesslog.v3.RuntimeFilter:

config.accesslog.v3.RuntimeFilter
---------------------------------


:repo:`[config.accesslog.v3.RuntimeFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L155>`

Filters requests based on runtime-configurable sampling rates.



.. code-block:: json
  :force:

  {
    "runtime_key": ...,
    "percent_sampled": {...},
    "use_independent_randomness": ...
  }

.. _envoy_v3_api_field_config.accesslog.v3.RuntimeFilter.runtime_key:


runtime_key
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_, *REQUIRED*) Specifies a key used to look up a custom sampling rate from the runtime configuration. If a value is found for this
  key, it will override the default sampling rate specified in ``percent_sampled``.


.. _envoy_v3_api_field_config.accesslog.v3.RuntimeFilter.percent_sampled:


percent_sampled
  (:ref:`type.v3.FractionalPercent <envoy_v3_api_msg_type.v3.FractionalPercent>`) Defines the default sampling percentage when no runtime override is present. If not specified, the default is
  **0%** (with a denominator of 100).


.. _envoy_v3_api_field_config.accesslog.v3.RuntimeFilter.use_independent_randomness:


use_independent_randomness
  (`bool <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) Controls how sampling decisions are made.

  - Default behavior (``false``):

    * Uses the :ref:`x-request-id<config_http_conn_man_headers_x-request-id>` as a consistent sampling pivot.
    * When :ref:`x-request-id<config_http_conn_man_headers_x-request-id>` is present, sampling will be consistent
      across multiple hosts based on both the ``runtime_key`` and
      :ref:`x-request-id<config_http_conn_man_headers_x-request-id>`.
    * Useful for tracking related requests across a distributed system.

  - When set to ``true`` or :ref:`x-request-id<config_http_conn_man_headers_x-request-id>` is missing:

    * Sampling decisions are made randomly based only on the ``runtime_key``.
    * Useful in complex filter configurations (like nested
      :ref:`AndFilter<envoy_v3_api_msg_config.accesslog.v3.AndFilter>`/
      :ref:`OrFilter<envoy_v3_api_msg_config.accesslog.v3.OrFilter>` blocks) where independent probability
      calculations are desired.
    * Can be used to implement logging kill switches with predictable probability distributions.




.. _envoy_v3_api_msg_config.accesslog.v3.AndFilter:

config.accesslog.v3.AndFilter
-----------------------------


:repo:`[config.accesslog.v3.AndFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L192>`

Performs a logical “and” operation on the result of each filter in filters.
Filters are evaluated sequentially and if one of them returns false, the
filter returns false immediately.



.. code-block:: json
  :force:

  {
    "filters": []
  }

.. _envoy_v3_api_field_config.accesslog.v3.AndFilter.filters:


filters
  (**repeated** :ref:`config.accesslog.v3.AccessLogFilter <envoy_v3_api_msg_config.accesslog.v3.AccessLogFilter>`, *REQUIRED*) 


.. _envoy_v3_api_msg_config.accesslog.v3.OrFilter:

config.accesslog.v3.OrFilter
----------------------------


:repo:`[config.accesslog.v3.OrFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L202>`

Performs a logical “or” operation on the result of each individual filter.
Filters are evaluated sequentially and if one of them returns true, the
filter returns true immediately.



.. code-block:: json
  :force:

  {
    "filters": []
  }

.. _envoy_v3_api_field_config.accesslog.v3.OrFilter.filters:


filters
  (**repeated** :ref:`config.accesslog.v3.AccessLogFilter <envoy_v3_api_msg_config.accesslog.v3.AccessLogFilter>`, *REQUIRED*) 


.. _envoy_v3_api_msg_config.accesslog.v3.HeaderFilter:

config.accesslog.v3.HeaderFilter
--------------------------------


:repo:`[config.accesslog.v3.HeaderFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L210>`

Filters requests based on the presence or value of a request header.



.. code-block:: json
  :force:

  {
    "header": {...}
  }

.. _envoy_v3_api_field_config.accesslog.v3.HeaderFilter.header:


header
  (:ref:`config.route.v3.HeaderMatcher <envoy_v3_api_msg_config.route.v3.HeaderMatcher>`, *REQUIRED*) Only requests with a header which matches the specified HeaderMatcher will
  pass the filter check.



.. _envoy_v3_api_msg_config.accesslog.v3.ResponseFlagFilter:

config.accesslog.v3.ResponseFlagFilter
--------------------------------------


:repo:`[config.accesslog.v3.ResponseFlagFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L223>`

Filters requests that received responses with an Envoy response flag set.
A list of the response flags can be found
in the access log formatter
:ref:`documentation<config_access_log_format_response_flags>`.



.. code-block:: json
  :force:

  {
    "flags": []
  }

.. _envoy_v3_api_field_config.accesslog.v3.ResponseFlagFilter.flags:


flags
  (**repeated** `string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) Only responses with the any of the flags listed in this field will be
  logged. This field is optional. If it is not specified, then any response
  flag will pass the filter check.



.. _envoy_v3_api_msg_config.accesslog.v3.GrpcStatusFilter:

config.accesslog.v3.GrpcStatusFilter
------------------------------------


:repo:`[config.accesslog.v3.GrpcStatusFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L269>`

Filters gRPC requests based on their response status. If a gRPC status is not
provided, the filter will infer the status from the HTTP status code.



.. code-block:: json
  :force:

  {
    "statuses": [],
    "exclude": ...
  }

.. _envoy_v3_api_field_config.accesslog.v3.GrpcStatusFilter.statuses:


statuses
  (**repeated** :ref:`config.accesslog.v3.GrpcStatusFilter.Status <envoy_v3_api_enum_config.accesslog.v3.GrpcStatusFilter.Status>`) Logs only responses that have any one of the gRPC statuses in this field.


.. _envoy_v3_api_field_config.accesslog.v3.GrpcStatusFilter.exclude:


exclude
  (`bool <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) If included and set to true, the filter will instead block all responses
  with a gRPC status or inferred gRPC status enumerated in statuses, and
  allow all other responses.


.. _envoy_v3_api_enum_config.accesslog.v3.GrpcStatusFilter.Status:

Enum config.accesslog.v3.GrpcStatusFilter.Status
------------------------------------------------


:repo:`[config.accesslog.v3.GrpcStatusFilter.Status proto] <api/envoy/config/accesslog/v3/accesslog.proto#L273>`




.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.OK:


OK
  *(DEFAULT)* ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.CANCELED:


CANCELED
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.UNKNOWN:


UNKNOWN
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.INVALID_ARGUMENT:


INVALID_ARGUMENT
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.DEADLINE_EXCEEDED:


DEADLINE_EXCEEDED
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.NOT_FOUND:


NOT_FOUND
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.ALREADY_EXISTS:


ALREADY_EXISTS
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.PERMISSION_DENIED:


PERMISSION_DENIED
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.RESOURCE_EXHAUSTED:


RESOURCE_EXHAUSTED
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.FAILED_PRECONDITION:


FAILED_PRECONDITION
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.ABORTED:


ABORTED
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.OUT_OF_RANGE:


OUT_OF_RANGE
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.UNIMPLEMENTED:


UNIMPLEMENTED
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.INTERNAL:


INTERNAL
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.UNAVAILABLE:


UNAVAILABLE
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.DATA_LOSS:


DATA_LOSS
  ⁣

.. _envoy_v3_api_enum_value_config.accesslog.v3.GrpcStatusFilter.Status.UNAUTHENTICATED:


UNAUTHENTICATED
  ⁣



.. _envoy_v3_api_msg_config.accesslog.v3.MetadataFilter:

config.accesslog.v3.MetadataFilter
----------------------------------


:repo:`[config.accesslog.v3.MetadataFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L308>`

Filters based on matching dynamic metadata.
If the matcher path and key correspond to an existing key in dynamic
metadata, the request is logged only if the matcher value is equal to the
metadata value. If the matcher path and key *do not* correspond to an
existing key in dynamic metadata, the request is logged only if
match_if_key_not_found is "true" or unset.



.. code-block:: json
  :force:

  {
    "matcher": {...},
    "match_if_key_not_found": {...}
  }

.. _envoy_v3_api_field_config.accesslog.v3.MetadataFilter.matcher:


matcher
  (:ref:`type.matcher.v3.MetadataMatcher <envoy_v3_api_msg_type.matcher.v3.MetadataMatcher>`) Matcher to check metadata for specified value. For example, to match on the
  access_log_hint metadata, set the filter to "envoy.common" and the path to
  "access_log_hint", and the value to "true".


.. _envoy_v3_api_field_config.accesslog.v3.MetadataFilter.match_if_key_not_found:


match_if_key_not_found
  (`BoolValue <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#boolvalue>`_) Default result if the key does not exist in dynamic metadata: if unset or
  true, then log; if false, then don't log.



.. _envoy_v3_api_msg_config.accesslog.v3.LogTypeFilter:

config.accesslog.v3.LogTypeFilter
---------------------------------


:repo:`[config.accesslog.v3.LogTypeFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L323>`

Filters based on access log type.



.. code-block:: json
  :force:

  {
    "types": [],
    "exclude": ...
  }

.. _envoy_v3_api_field_config.accesslog.v3.LogTypeFilter.types:


types
  (**repeated** :ref:`data.accesslog.v3.AccessLogType <envoy_v3_api_enum_data.accesslog.v3.AccessLogType>`) Logs only records which their type is one of the types defined in this field.


.. _envoy_v3_api_field_config.accesslog.v3.LogTypeFilter.exclude:


exclude
  (`bool <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) If this field is set to true, the filter will instead block all records
  with a access log type in types field, and allow all other records.



.. _envoy_v3_api_msg_config.accesslog.v3.ExtensionFilter:

config.accesslog.v3.ExtensionFilter
-----------------------------------


:repo:`[config.accesslog.v3.ExtensionFilter proto] <api/envoy/config/accesslog/v3/accesslog.proto#L334>`

Extension filter is statically registered at runtime.



.. code-block:: json
  :force:

  {
    "name": ...,
    "typed_config": {...}
  }

.. _envoy_v3_api_field_config.accesslog.v3.ExtensionFilter.name:


name
  (`string <https://developers.google.com/protocol-buffers/docs/proto#scalar>`_) The name of the filter implementation to instantiate. The name must
  match a statically registered filter.


.. _envoy_v3_api_field_config.accesslog.v3.ExtensionFilter.typed_config:


typed_config
  (`Any <https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#any>`_) 
  Custom configuration that depends on the filter being instantiated.