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