README.rst 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. Logging library
  2. ===============
  3. Overview
  4. --------
  5. The logging library provides two ways for setting log verbosity:
  6. - **At compile time**: in menuconfig, set the verbosity level using the option :envvar:`CONFIG_LOG_DEFAULT_LEVEL`. All logging statements for verbosity levels higher than :envvar:`CONFIG_LOG_DEFAULT_LEVEL` will be removed by the preprocessor.
  7. - **At runtime**: all logs for verbosity levels lower than :envvar:`CONFIG_LOG_DEFAULT_LEVEL` are enabled by default. The function :cpp:func:`esp_log_level_set` can be used to set a logging level on a per module basis. Modules are identified by their tags, which are human-readable ASCII zero-terminated strings.
  8. There are the following verbosity levels:
  9. - Error (lowest)
  10. - Warning
  11. - Info
  12. - Debug
  13. - Verbose (highest)
  14. .. note::
  15. The function :cpp:func:`esp_log_level_set` cannot set logging levels higher than specified by :envvar:`CONFIG_LOG_DEFAULT_LEVEL`. To increase log level for a specific file at compile time, use the macro `LOG_LOCAL_LEVEL` (see the details below).
  16. How to use this library
  17. -----------------------
  18. In each C file that uses logging functionality, define the TAG variable as shown below:
  19. .. code-block:: c
  20. static const char* TAG = "MyModule";
  21. Then use one of logging macros to produce output, e.g:
  22. .. code-block:: c
  23. ESP_LOGW(TAG, "Baud rate error %.1f%%. Requested: %d baud, actual: %d baud", error * 100, baud_req, baud_real);
  24. Several macros are available for different verbosity levels:
  25. * ``ESP_LOGE`` - error (lowest)
  26. * ``ESP_LOGW`` - warning
  27. * ``ESP_LOGI`` - info
  28. * ``ESP_LOGD`` - debug
  29. * ``ESP_LOGV`` - verbose (highest)
  30. Additionally, there are ``ESP_EARLY_LOGx`` versions for each of these macros, e.g., :c:macro:`ESP_EARLY_LOGE`. These versions have to be used explicitly in the early startup code only, before heap allocator and syscalls have been initialized. Normal ``ESP_LOGx`` macros can also be used while compiling the bootloader, but they will fall back to the same implementation as ``ESP_EARLY_LOGx`` macros.
  31. To override default verbosity level at file or component scope, define the ``LOG_LOCAL_LEVEL`` macro.
  32. At file scope, define it before including ``esp_log.h``, e.g.:
  33. .. code-block:: c
  34. #define LOG_LOCAL_LEVEL ESP_LOG_VERBOSE
  35. #include "esp_log.h"
  36. At component scope, define it in the component makefile:
  37. .. code-block:: make
  38. CFLAGS += -D LOG_LOCAL_LEVEL=ESP_LOG_DEBUG
  39. To configure logging output per module at runtime, add calls to the function :cpp:func:`esp_log_level_set` as follows:
  40. .. code-block:: c
  41. esp_log_level_set("*", ESP_LOG_ERROR); // set all components to ERROR level
  42. esp_log_level_set("wifi", ESP_LOG_WARN); // enable WARN logs from WiFi stack
  43. esp_log_level_set("dhcpc", ESP_LOG_INFO); // enable INFO logs from DHCP client
  44. Logging to Host via JTAG
  45. ^^^^^^^^^^^^^^^^^^^^^^^^
  46. By default, the logging library uses the vprintf-like function to write formatted output to the dedicated UART. By calling a simple API, all log output may be routed to JTAG instead, making logging several times faster. For details, please refer to Section :ref:`app_trace-logging-to-host`.