Dynamic Modules Access Logger (proto)
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:
This extension must be configured with one of the following type URLs:
extensions.access_loggers.dynamic_modules.v3.DynamicModuleAccessLog
[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.
{
"dynamic_module_config": {...},
"logger_name": ...,
"logger_config": {...}
}
- dynamic_module_config
(extensions.dynamic_modules.v3.DynamicModuleConfig, REQUIRED) Specifies the shared-object level configuration. This field is required.
- 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_nameto the dynamic module’s access logger config init function together with thelogger_config. That way a module can decide which in-module logger implementation to use based on the name at load time.
- 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_nameis used to choose either file or external. Thelogger_configcan be used to configure file paths, service endpoints, batching parameters, format strings, etc.google.protobuf.Structis serialized as JSON before passing it to the module.google.protobuf.BytesValueandgoogle.protobuf.StringValueare passed directly without the wrapper.# 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"