pw_log_string#
Pigweed AI summary: The "pw_log_string" module is a partial backend for "pw_log" that forwards the "PW_LOG_*" macros to the "pw_log_string:handler" facade, which is backed by a C API. However, this module is not suitable for space-constrained devices as it passes the log message, file name, and module name as a string to the handler function. It is better suited for usage on a host. The "pw_log_string:handler" can be used even when
pw_log_string
is a partial backend for pw_log
. This backend fowards the
PW_LOG_*
macros to the pw_log_string:handler
facade which is backed by
a C API. pw_log_string:handler
does not implement the full C API, leaving
projects to provide their own implementation of
pw_log_string_HandleMessageVaList
. See pw_log_basic
for a similar
pw_log
backend that also provides an implementation.
As this module passes the log message, file name, and module name as a string to the handler function, it’s relatively expensive and not well suited for space-constrained devices. This module is oriented towards usage on a host (e.g. a simulated device).
Note that pw_log_string:handler
may be used even when it’s not used
as the backend for pw_log
via pw_log_string
. For example it can be
useful to mix tokenized and string based logging in case you have a C ABI where
tokenization can not be used on the other side.
Getting started#
Pigweed AI summary: This module is easy to set up and requires implementing pw_log_string_HandleMessageVaList(), setting pw_log_BACKEND to "$dir_pw_log_string", and pointing pw_log_string_HANDLER_BACKEND to the source set that implements pw_log_string_HandleMessageVaList(). Optionally, one can provide their own implementation of PW_LOG_STRING_HANDLE_MESSAGE which invokes pw_log_string_HANDLER_BACKEND with selected arguments. The implementation of pw_log_string_HandleMessageVaList() can vary, with examples including pw_log_basic's log handler, encoding
This module is extremely minimal to set up:
Implement
pw_log_string_HandleMessageVaList()
Set
pw_log_BACKEND
to"$dir_pw_log_string"
Set
pw_log_string_HANDLER_BACKEND
to point to the source set that implementspw_log_string_HandleMessageVaList()
Optionally provide your own implementation of
PW_LOG_STRING_HANDLE_MESSAGE
which invokespw_log_string_HANDLER_BACKEND
with your selected arguments.
What exactly pw_log_string_HandleMessageVaList()
should do is entirely up to
the implementation. pw_log_basic
’s log handler is one example, but it’s also
possible to encode as protobuf and send over a TCP port, write to a file, or
blink an LED to log as morse code.