pw_log_basic#

Stable

pw_log_basic is a pw_log backend that sends logs over pw_sys_io by default. The destination of pw_sys_io depends on the pw_sys_io backend in use. This is controlled by the dir_pw_sys_io_backend variable in a target’s target_config.gni.

Interface extension#

The log output may be changed from pw_sys_io to an arbitrary function by calling pw::log_basic::SetOutput.

void SetOutput(void (*log_output)(std::string_view))#

Set the log output function, which defaults pw_sys_io::WriteLine. This function is called with each formatted log message.

Note that pw::log_baisc::SetOutput is not part of the pw_log interface. As a result, in the Bazel build, any build target that calls this function must:

  • Explicitly list @pigweed//pw_log_basic:extension in its deps. This avoids a Layering check violation.

  • Mark itself target_compatible_with only configurations for which the config_setting @pigweed//pw_log_basic:is_active_backend is true. This informs the build system that the target is only compatible with platforms that set the pw_log backend to pw_log_basic.

See //pw_hdlc:hdlc_sys_io_system_server for an example of such a target.

Implementation#

This module employs an internal buffer for formatting log strings, whose size can be configured via the PW_LOG_BASIC_ENTRY_SIZE macro which defaults to 150 bytes. Any final log statements that are larger than PW_LOG_BASIC_ENTRY_SIZE - 1 bytes (one byte used for a null terminator) will be truncated.

Note

The documentation for this module is currently incomplete.