Lines Matching +full:human +full:- +full:readable +full:- +full:name
17 - Deferred logging reduces the time needed to log a message by shifting time
20 - Multiple backends supported (up to 9 backends).
21 - Custom frontend support. It can work together with backends.
22 - Compile time filtering on module level.
23 - Run time filtering independent for each backend.
24 - Additional run time filtering on module instance level.
25 - Timestamping with user provided function. Timestamp can have 32 or 64 bits.
26 - Dedicated API for dumping data.
27 - Dedicated API for handling transient strings.
28 - Panic support - in panic mode logging switches to blocking, synchronous
30 - Printk support - printk message can be redirected to the logging.
31 - Design ready for multi-domain/multi-processor system.
32 - Support for logging floating point variables and long long arguments.
33 - Built-in copying of transient strings used as arguments.
34 - Support for multi-domain logging.
51 - ``LOG_X`` for standard printf-like messages, e.g. :c:macro:`LOG_ERR`.
52 - ``LOG_HEXDUMP_X`` for dumping data, e.g. :c:macro:`LOG_HEXDUMP_WRN`.
53 - ``LOG_INST_X`` for standard printf-like message associated with the
55 - ``LOG_INST_HEXDUMP_X`` for dumping data associated with the particular
60 - :c:macro:`LOG_WRN_ONCE` for warnings where only the first occurrence is of interest.
74 Each module which is using the logging must specify its unique name and
76 registration is performed in one file but each file must define a module name.
162 with function name. Hexdump messages are not prepended.
165 with function name. Hexdump messages are not prepended.
168 with function name. Hexdump messages are not prepended.
171 with function name. Hexdump messages are not prepended.
181 :kconfig:option:`CONFIG_LOG_BACKEND_UART`: Enabled built-in UART backend.
191 In order to use logging in the module, a unique name of a module must be
197 .. code-block:: c
209 .. code-block:: c
222 .. code-block:: c
239 .. code-block:: none
242 module-str = foo
248 In case of modules which are multi-instance and instances are widely used
255 - a pointer to specific logging structure is declared in instance structure.
258 .. code-block:: c
267 - module must provide macro for instantiation. In that macro, logging instance
270 .. code-block:: c
281 In order to use the instance logging API in a source file, a compile-time log
284 .. code-block:: c
290 LOG_INST_INF(f->log, "Initialized.");
293 In order to use the instance logging API in a header file, a compile-time log
296 .. code-block:: c
302 LOG_INST_INF(f->log, "Initialized.");
323 .. code-block:: c
382 - Frontend
383 - Core
384 - Backends
399 -----------
407 * Each message is a self-contained, continuous block of memory thus it is suited
414 +------------------+----------------------------------------------------+
416 | +----------------------------------------------------+
418 | +----------------------------------------------------+
420 | +----------------------------------------------------+
422 | +----------------------------------------------------+
424 | +----------------------------------------------------+
426 | +----------------------------------------------------+
428 | +----------------------------------------------------+
430 | +----------------------------------------------------+
432 | +----------------------------------------------------+
434 +------------------+----------------------------------------------------+
436 | +----------------------------------------------------+
438 | | (optional) +----------------------------------------------------+
440 +------------------+----------------------------------------------------+
442 +------------------+----------------------------------------------------+
444 +------------------+----------------------------------------------------+
452 ----------------------
458 - No overflow - the new log is dropped if space for a message cannot be allocated.
459 - Overflow - the oldest pending messages are freed, until the new message can be
466 Run-time filtering
467 ------------------
469 If run-time filtering is enabled, then for each source of logging a filter
472 the system. *Slot 0* (bits 0-2) is used to aggregate maximal filter setting for
480 2 up to info level (*slot 2*). Slots 3-9 are not used. Aggregated filter
484 +------+------+------+------+-----+------+
486 +------+------+------+------+-----+------+
488 +------+------+------+------+-----+------+
506 ---------------------------------------------------------
518 Multi-domain support
525 Tracing and debugging on a multi-domain system is more complex and requires an efficient logging
532 * Use a multi-domain logging system where log messages from each domain end up in one root domain,
537 The Log link is an interface introduced in this multi-domain approach. The Log link is
544 There are three types of domains in a multi-domain system:
546 * The *end domain* has the logging core implementation and a cross-domain
549 have backends that output logs to the user. It has a cross-domain backend either to
554 See the following image for an example of a multi-domain setup:
558 Multi-domain example
561 For example, let's consider an SoC with two ARM Cortex-M33 cores with TrustZone: cores A and B (see
564 root domain, it has two links: one to *core A secure* (A_NS-A_S) and one to
565 *core B nonsecure* (A_NS-B_NS). *B_NS* domain has one link, to *core B secure*
566 *B_NS-B_S*), and a backend to *A_NS*.
573 ---------
598 #. When the *B_NS-B_S* link receives the message, it increases the ``domain_id``
599 to ``1`` by adding the *B_NS-B_S* offset.
601 #. When the *A_NS-B_NS* link receives the message, it adds the offset (``2``) to the ``domain_id``.
605 Cross-domain log message
606 ------------------------
611 processing can include converting a string package to a *fully self-contained*
612 version (copying read-only strings to the package body).
618 -----------------
620 In the single-domain case, each log source has a dedicated variable with runtime
621 filtering for each backend in the system. In the multi-domain case, the originator of
632 in both multi-domain and single-domain scenarios.
635 ----------------
642 * If domains have the same timestamp source or if there is an out-of-bound mechanism that
663 identified by source ID and domain ID. Source ID can be retrieved if source name
669 switch to synchronous, interrupt-less operation or shut down itself if that is
681 ------------------
688 .. code-block:: console
695 Dictionary-based Logging
698 Dictionary-based logging, instead of human readable texts, outputs the log
708 an offline parser and is not as intuitive to use as text-based log messages.
716 -------------
718 Here are kconfig options related to dictionary-based logging:
720 - :kconfig:option:`CONFIG_LOG_DICTIONARY_SUPPORT` enables dictionary-based logging
723 - The UART backend can be used for dictionary-based logging. These are
726 - :kconfig:option:`CONFIG_LOG_BACKEND_UART_OUTPUT_DICTIONARY_HEX` tells
731 - :kconfig:option:`CONFIG_LOG_BACKEND_UART_OUTPUT_DICTIONARY_BIN` tells
736 -----
738 When dictionary-based logging is enabled via enabling related logging backends,
746 .. code-block:: console
752 Add an optional argument ``--hex`` to the end if the log data file contains
757 Please refer to the :zephyr:code-sample:`logging-dictionary` sample to learn more on how to use
777 .. code-block:: c
788 +--------------------------------------------+------------------+
793 +--------------------------------------------+------------------+
796 +--------------------------------------------+------------------+
798 +--------------------------------------------+------------------+
800 +--------------------------------------------+------------------+
802 +--------------------------------------------+------------------+
805 +--------------------------------------------+------------------+
807 +--------------------------------------------+------------------+
809 +--------------------------------------------+------------------+
812 +--------------------------------------------+------------------+
844 +---------------+----------+----------------------------+-----------+-----------------------------+
847 | ARM Cortex-M3 | 40 | 152 | 412 | 783 |
848 +---------------+----------+----------------------------+-----------+-----------------------------+
850 +---------------+----------+----------------------------+-----------+-----------------------------+
852 +---------------+----------+----------------------------+-----------+-----------------------------+
854 +---------------+----------+----------------------------+-----------+-----------------------------+
856 +---------------+----------+----------------------------+-----------+-----------------------------+