.. _envoy_v3_api_file_envoy/extensions/access_loggers/dynamic_modules/v3/dynamic_modules.proto: Dynamic Modules Access Logger (proto) ===================================== .. _extension_envoy.access_loggers.dynamic_modules: This extension has the qualified name ``envoy.access_loggers.dynamic_modules`` .. note:: This extension is functional but has not had substantial production burn time, use only with this caveat. This extension is not hardened and should only be used in deployments where both the downstream and upstream are trusted. .. tip:: This extension extends and can be used with the following extension category: - :ref:`envoy.access_loggers ` This extension must be configured with one of the following type URLs: - :ref:`type.googleapis.com/envoy.extensions.access_loggers.dynamic_modules.v3.DynamicModuleAccessLog ` .. _envoy_v3_api_msg_extensions.access_loggers.dynamic_modules.v3.DynamicModuleAccessLog: extensions.access_loggers.dynamic_modules.v3.DynamicModuleAccessLog ------------------------------------------------------------------- :repo:`[extensions.access_loggers.dynamic_modules.v3.DynamicModuleAccessLog proto] ` Configuration for the Dynamic Modules Access Logger. This logger allows loading shared object files via ``dlopen`` to implement custom access logging behavior. A module can be loaded by multiple access loggers; the module is loaded only once and shared across multiple logger instances. The access logger receives completed request information including request/response headers, stream info (timing, upstream info, response codes), and the log context type. .. code-block:: json :force: { "dynamic_module_config": {...}, "logger_name": ..., "logger_config": {...} } .. _envoy_v3_api_field_extensions.access_loggers.dynamic_modules.v3.DynamicModuleAccessLog.dynamic_module_config: dynamic_module_config (:ref:`extensions.dynamic_modules.v3.DynamicModuleConfig `, *REQUIRED*) Specifies the shared-object level configuration. This field is required. .. _envoy_v3_api_field_extensions.access_loggers.dynamic_modules.v3.DynamicModuleAccessLog.logger_name: logger_name (`string `_) The name for this logger configuration. If not specified, defaults to an empty string. This can be used to distinguish between different logger implementations inside a dynamic module. For example, a module can have completely different logger implementations (e.g., file logger, gRPC logger, metrics logger). When Envoy receives this configuration, it passes the ``logger_name`` to the dynamic module's access logger config init function together with the ``logger_config``. That way a module can decide which in-module logger implementation to use based on the name at load time. .. _envoy_v3_api_field_extensions.access_loggers.dynamic_modules.v3.DynamicModuleAccessLog.logger_config: logger_config (`Any `_) The configuration for the logger chosen by ``logger_name``. If not specified, an empty configuration is passed to the module. This is passed to the module's access logger initialization function. Together with the ``logger_name``, the module can decide which in-module logger implementation to use and fine-tune the behavior of the logger. For example, if a module has two logger implementations, one for file output and one for sending to an external service, ``logger_name`` is used to choose either file or external. The ``logger_config`` can be used to configure file paths, service endpoints, batching parameters, format strings, etc. ``google.protobuf.Struct`` is serialized as JSON before passing it to the module. ``google.protobuf.BytesValue`` and ``google.protobuf.StringValue`` are passed directly without the wrapper. .. code-block:: yaml # Passing a JSON struct configuration logger_config: "@type": "type.googleapis.com/google.protobuf.Struct" value: output_path: "/var/log/envoy/access.log" format: "json" buffer_size: 1000 # Passing a simple string configuration logger_config: "@type": "type.googleapis.com/google.protobuf.StringValue" value: "/var/log/envoy/access.log"