xref: /aosp_15_r20/external/pigweed/pw_log_zephyr/docs.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1.. _module-pw_log_zephyr:
2
3=============
4pw_log_zephyr
5=============
6
7--------
8Overview
9--------
10This interrupt backend implements the ``pw_log`` facade. Currently, two
11separate Pigweed backends are implemented. One that uses the plain Zephyr
12logging framework and routes Pigweed's logs to Zephyr. While another maps
13the Zephyr logging macros to Pigweed's tokenized logging.
14
15Using Zephyr logging
16--------------------
17To enable, set ``CONFIG_PIGWEED_LOG_ZEPHYR=y``. After that, logging can be
18controlled via the standard `Kconfig options`_. All logs made through
19`PW_LOG_*` are logged to the Zephyr logging module ``pigweed``. In this
20model, the Zephyr logging is set as ``pw_log``'s backend.
21
22Using Pigweed tokenized logging
23-------------------------------
24Using the pigweed logging can be done by enabling
25``CONFIG_PIGWEED_LOG_TOKENIZED=y``. At that point ``pw_log_tokenized`` is set
26as the backend for ``pw_log`` and all Zephyr logs are routed to Pigweed's
27logging facade. This means that any logging statements made in Zephyr itself
28are also tokenized.
29
30When enabled, a few extra configurations are available to control the tokenized
31metadata bits such as log level bits, line number bits, custom flag bits, and
32module string bits.
33The log format string may also be modified by defining your own ``PW_LOG_TOKENIZED_FORMAT_STRING``.
34This can be done in your cmake by including your own header that defines it.
35
36.. code-block::
37
38   add_library(log_tokenized_config INTERFACE)
39   target_compile_options(log_tokenized_config INTERFACE -include header_file_that_sets_that_macro.h)
40   pw_set_module_config(pw_log_tokenized_CONFIG log_tokenized_config)
41
42Setting the log level
43---------------------
44In order to remain compatible with existing Pigweed code, the logging backend
45respects ``PW_LOG_LEVEL``. If set, the backend will translate the Pigweed log
46levels to their closest Zephyr counterparts:
47
48+---------------------------+-------------------+
49| Pigweed                   | Zephyr            |
50+===========================+===================+
51| ``PW_LOG_LEVEL_DEBUG``    | ``LOG_LEVEL_DBG`` |
52+---------------------------+-------------------+
53| ``PW_LOG_LEVEL_INFO``     | ``LOG_LEVEL_INF`` |
54+---------------------------+-------------------+
55| ``PW_LOG_LEVEL_WARN``     | ``LOG_LEVEL_WRN`` |
56+---------------------------+-------------------+
57| ``PW_LOG_LEVEL_ERROR``    | ``LOG_LEVEL_ERR`` |
58|                           |                   |
59| ``PW_LOG_LEVEL_CRITICAL`` |                   |
60|                           |                   |
61| ``PW_LOG_LEVEL_FATAL``    |                   |
62+---------------------------+-------------------+
63
64Alternatively, it is also possible to set the Zephyr logging level directly via
65``CONFIG_PIGWEED_LOG_LEVEL``.
66
67.. _`Kconfig options`: https://docs.zephyrproject.org/latest/reference/logging/index.html#global-kconfig-options
68