blob: 1c30ee7689e84476bd9e8e283c3a09726b316a4c [file] [log] [blame]
Wyatt Heplerf9fb90f2020-09-30 18:59:33 -07001.. _module-pw_log_tokenized:
Keir Mierlebc5a2692020-05-21 16:52:25 -07002
Wyatt Heplercb725c12020-05-01 11:05:01 -07003----------------
4pw_log_tokenized
5----------------
6``pw_log_tokenized`` is a ``pw_log`` backend that tokenizes log messages using
7the ``pw_tokenizer`` module. Log messages are tokenized and passed to the
Wyatt Hepler7a5e4d62020-08-31 08:39:16 -07008``pw_tokenizer_HandleEncodedMessageWithPayload`` function. For maximum
Wyatt Heplercb725c12020-05-01 11:05:01 -07009efficiency, the log level, 16-bit tokenized module name, and flags bits are
10passed through the payload argument.
11
12Example implementation:
13
14.. code-block:: cpp
15
Wyatt Hepler7a5e4d62020-08-31 08:39:16 -070016 extern "C" void pw_tokenizer_HandleEncodedMessageWithPayload(
17 pw_tokenizer_Payload payload, const uint8_t message[], size_t size) {
Wyatt Heplercb725c12020-05-01 11:05:01 -070018 // The metadata object provides the log level, module token, and flags.
19 // These values can be recorded and used for runtime filtering.
20 pw::log_tokenized::Metadata metadata(payload);
21
22 if (metadata.level() < current_log_level) {
23 return;
24 }
25
26 if (metadata.flags() & HIGH_PRIORITY_LOG != 0) {
27 EmitHighPriorityLog(metadata.module(), message, size);
28 } else {
29 EmitLowPriorityLog(metadata.module(), message, size);
30 }
31 }
32
33See the documentation for ``pw_tokenizer`` for further details.
34
Wyatt Hepler67368872020-07-30 16:55:38 -070035Build targets
36-------------
37The GN build for ``pw_log_tokenized`` has two targets: ``pw_log_tokenized`` and
38``log_backend``. The ``pw_log_tokenized`` target provides the
39``pw_log_tokenized/log_tokenized.h`` header. The ``log_backend`` target
40implements the backend for the ``pw_log`` facade. ``pw_log_tokenized`` invokes
Wyatt Heplere0575f72020-10-16 10:47:03 -070041the ``pw_tokenizer:global_handler_with_payload`` facade, which must be
Wyatt Hepler67368872020-07-30 16:55:38 -070042implemented by the user of ``pw_log_tokenized``.
43
Wyatt Heplercb725c12020-05-01 11:05:01 -070044.. note::
45 The documentation for this module is currently incomplete.