MINOR: log: support "raw" logformat node typecast
authorAurelien DARRAGON <adarragon@haproxy.com>
Tue, 1 Apr 2025 18:25:08 +0000 (20:25 +0200)
committerAurelien DARRAGON <adarragon@haproxy.com>
Wed, 2 Apr 2025 13:24:31 +0000 (15:24 +0200)
commit896ca2e60284dd04ab0196fcf112b6b87455db2f
tree8c28d545bc663e6fb63687bd79fdf532aedf5ce4
parent7f0031e394d46a60efb2b8967b5ea9f39f867126
MINOR: log: support "raw" logformat node typecast

"raw" logformat node typecast is a special value (unlike str,bool,int..)
which tells haproxy to completely ignore logformat options (including
encoding ones) and force binary output for the current node only. It is
mainly intended for use with JSON or CBOR encoders in order to generate
nested CBOR or nested JSON by storing intermediate log-formats within
variables and assembling the final object in the parent log-format.

Example:

  http-request set-var-fmt(txn.intermediate) "%{+json}o %(lower)[str(value)]"

  log-format "%{+json}o %(upper)[str(value)] %(intermediate:raw)[var(txn.intermediate)]"

Would produce:

   {"upper": "value", "intermediate": {"lower": "value"}}

(cherry picked from commit 423cca64b632771235f2633f5c2a8b9855317cf4)
Signed-off-by: Aurelien DARRAGON <adarragon@haproxy.com>
(cherry picked from commit cf4488acff80814fa26e40fab24c06162e54bef4)
Signed-off-by: Aurelien DARRAGON <adarragon@haproxy.com>
src/log.c