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