xref: /aosp_15_r20/external/pigweed/pw_log_zephyr/docs.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
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