Formatter extension for printing CEL expressions (proto)
This extension has the qualified name envoy.formatter.cel
Note
This extension is functional but has not had substantial production burn time, use only with this caveat.
This extension is intended to be robust against both untrusted downstream and upstream traffic.
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:
CEL formatter extension implements CEL command operator that evaluates configured symbolic Common Expression Language expressions to generate an access log.
See here for more information on access log configuration.
%CEL(EXPRESSION):Z% Expressions are based on the set of Envoy attributes. Expression errors are considered -. Z is an optional parameter denoting string truncation up to Z characters long.
Examples:
%CEL(response.code)%
%CEL(connection.mtls)%
%CEL(request.headers['x-envoy-original-path']):10%
%CEL(request.headers['x-log-mtls'] || request.url_path.contains('v1beta3'))%
Alternatively: %TYPED_CEL(EXPRESSION):Z% When using a non-text access log format like JSON, this format command is able to emit values of non-string types, like number, boolean, and null, based on the output of the CEL expression. It otherwise functions the same as %CEL%. CEL types not native to JSON are coerced as follows:
Bytes are base64 encoded to produce a string.
Durations are stringified as a count of seconds, e.g. duration(“1h30m”) becomes “5400s”.
Timestamps are formatted to UTC, e.g. timestamp(“2023-08-26T12:39:00-07:00”) becomes “2023-08-26T19:39:00+00:00”
Maps become objects, provided all keys can be coerced to strings and that all values can coerce to types representable in JSON.
Lists become lists, provided all values can coerce to types representable in JSON.
extensions.formatter.cel.v3.Cel
[extensions.formatter.cel.v3.Cel proto]
Configuration for the CEL formatter.
Warning
This extension is treated as built-in extension and will be enabled by default now. It is unnecessary to configure this extension.