This seems good. I think `?:` looks too much like a ternary operator. I recommend `??` as there is some precedence for that to mean "or this".
Chris Sent with Proton Mail secure email. On Tuesday, March 24th, 2026 at 9:48 AM, Brian Neradt <[email protected]> wrote: > Hi [email protected], > > I wanted to invite feedback on a small logging feature I’m working on for > ATS by request from our ops team. ATS currently supports transactional > logging of specific header field values with expressions such as: > > %<{x-primary-id}cqh> > > `cqh` is the ATS log formatting field that prints the value of a particular > client request header field, in this case x-primary-id. Today, if that > header is not present, ATS logs the normal missing value, `-`. The proposed > feature allows a fallback chain so users can log an alternate header when > the primary one is absent. > > Example: > > %<{x-primary-id}cqh?:{x-secondary-id}cqh> > > Note the `?:`, the proposed operator which signals the chain. This is > evaluated left to right: > > > - If x-primary-id exists, log that > - Otherwise if x-secondary-id exists, log that > - Otherwise log - > > > A few notes about the current behavior: > > - This alternate chain feature is limited to header field log formats > for now (cqh, pqh, ssh, etc.). > - The chain can contain an arbitrary set of alternate field names (i.e., > not just one alternate, but two, three, etc.). > - An existing header field with an empty value is treated as present. > > > Slices remain per-candidate, so this is valid: > > %<{x-primary-id}cqh[0:8]?:{x-secondary-id}cqh[0:16]> > > The goal is to make log configuration more flexible for deployments that > need to accommodate multiple header conventions for the same type of data > without duplicating formatting fields and requiring post-processing of > transaction logs. > > For reference, here is a PR that implements this feature: > > https://github.com/apache/trafficserver/pull/13018 > > Please let me know if you have feedback or concerns. If you have ideas > other than the `?:` operator, for instance, I'm definitely open to trying > something else. > > Thanks! > Brian Neradt > > -- > "Come to Me, all who are weary and heavy-laden, and I will > give you rest. Take My yoke upon you and learn from Me, for > I am gentle and humble in heart, and you will find rest for > your souls. For My yoke is easy and My burden is light." > > ~ Matthew 11:28-30 >
