This was inspired by the ProtobufLogger.py already present in the
'contrib' directory.
In addition to being written in Rust instead of Python, there are
various other differences:
* Each line of output is prefixed with the sender's 'socket address'
(IP address and port number).
* Messages from multiple clients will be properly output, they will
not be mixed.
* Timestamp format is slightly different (full ISO-8601 with UTC
offset).
* Command-line arguments are handled by a full parser, which can
generate help text and report the program's version.
* All 'optional' fields in the protobuf messages are checked for
presence before being read.
* Output to stdout will never block reception/decoding/formatting of
protobuf messages; if stdout blocks for some reason, incoming
messages will be stored in memory until they can be printed.
* Summary, meta, and question lines are printed; responses are not,
nor is OpenTelemetry data. Future work for another contributor!
* 'meta' output is untested.
* A Cargo feature 'opentelemetry' is available to be the starting
point of OT support.
No AI or LLM tools were used in the creation or testing of this code.