pw_log_tokenized

pw_log_tokenized is a pw_log backend that tokenizes log messages using the pw_tokenizer module. Log messages are tokenized and passed to the pw_tokenizer_HandleEncodedMessageWithPayload function. For maximum efficiency, the log level, 16-bit tokenized module name, and flags bits are passed through the payload argument.

Example implementation:

extern "C" void pw_tokenizer_HandleEncodedMessageWithPayload(
    pw_tokenizer_Payload payload, const uint8_t message[], size_t size) {
  // The metadata object provides the log level, module token, and flags.
  // These values can be recorded and used for runtime filtering.
  pw::log_tokenized::Metadata metadata(payload);

  if (metadata.level() < current_log_level) {
    return;
  }

  if (metadata.flags() & HIGH_PRIORITY_LOG != 0) {
    EmitHighPriorityLog(metadata.module(), message, size);
  } else {
    EmitLowPriorityLog(metadata.module(), message, size);
  }
}

See the documentation for pw_tokenizer for further details.

Build targets

The GN build for pw_log_tokenized has two targets: pw_log_tokenized and log_backend. The pw_log_tokenized target provides the pw_log_tokenized/log_tokenized.h header. The log_backend target implements the backend for the pw_log facade. pw_log_tokenized invokes the pw_tokenizer:global_handler_with_payload facade, which must be implemented by the user of pw_log_tokenized.

Note

The documentation for this module is currently incomplete.