| # Copyright (c) 2016 Intel Corporation |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| menuconfig LOG |
| bool "Logging" |
| select PRINTK if USERSPACE |
| help |
| Global switch for the logger, when turned off log calls will not be |
| compiled in. |
| |
| if LOG |
| |
| config LOG_MINIMAL |
| bool "Enable minimal-footprint logging" |
| imply PRINTK |
| help |
| Enable minimal logging implementation. This has very little footprint |
| overhead on top of the printk() implementation for standard |
| logging macros. Hexdump macros are also supported, with a small |
| amount of code pulled in if used. Build time filtering is supported, |
| but not runtime filtering. There are no timestamps, prefixes, |
| colors, or asynchronous logging, and all messages are simply |
| sent to printk(). |
| |
| config LOG_RUNTIME_FILTERING |
| bool "Enable runtime reconfiguration of the logger" |
| depends on !LOG_FRONTEND && !LOG_MINIMAL |
| help |
| Allow runtime configuration of maximal, independent severity |
| level for instance. |
| |
| config LOG_DEFAULT_LEVEL |
| int "Default log level" |
| default 3 |
| range 0 4 |
| help |
| Sets log level for modules which don't specify it explicitly. When |
| set to 0 it means log will not be activated for those modules. |
| Levels are: |
| |
| - 0 OFF, do not write by default |
| - 1 ERROR, default to only write LOG_LEVEL_ERR |
| - 2 WARNING, default to write LOG_LEVEL_WRN |
| - 3 INFO, default to write LOG_LEVEL_INFO |
| - 4 DEBUG, default to write LOG_LEVEL_DBG |
| |
| config LOG_OVERRIDE_LEVEL |
| int "Override lowest log level" |
| default 0 |
| range 0 4 |
| help |
| Forces a minimum log level for all modules. Modules use their |
| specified level if it is greater than this option, otherwise they use |
| the level specified by this option instead of their default or |
| whatever was manually set. |
| Levels are: |
| |
| - 0 OFF, do not override |
| - 1 ERROR, override to write LOG_LEVEL_ERR |
| - 2 WARNING, override to write LOG_LEVEL_WRN |
| - 3 INFO, override to write LOG_LEVEL_INFO |
| - 4 DEBUG, override to write LOG_LEVEL_DBG |
| |
| config LOG_MAX_LEVEL |
| int "Maximal log level compiled in the system" |
| default 4 |
| range 0 4 |
| help |
| Forces a maximal log level for all modules. Modules saturates their |
| specified level if it is greater than this option, otherwise they use |
| the level specified by this option instead of their default or |
| whatever was manually set. |
| Levels are: |
| |
| - 0 OFF, logging is turned off |
| - 1 ERROR, maximal level set to LOG_LEVEL_ERR |
| - 2 WARNING, maximal level set to LOG_LEVEL_WRN |
| - 3 INFO, maximal level set to LOG_LEVEL_INFO |
| - 4 DEBUG, maximal level set to LOG_LEVEL_DBG |
| |
| config LOG_MIPI_SYST_ENABLE |
| bool "Enable mipi syst format output" |
| select MIPI_SYST_LIB |
| help |
| Enable mipi syst format output for the logger system. |
| |
| if !LOG_MINIMAL |
| |
| menu "Prepend log message with function name" |
| depends on !LOG_FRONTEND |
| |
| config LOG_FUNC_NAME_PREFIX_ERR |
| bool "Error messages prepended" |
| |
| config LOG_FUNC_NAME_PREFIX_WRN |
| bool "Warning messages prepended" |
| |
| config LOG_FUNC_NAME_PREFIX_INF |
| bool "Info messages prepended" |
| |
| config LOG_FUNC_NAME_PREFIX_DBG |
| bool "Debug messages prepended" |
| default y |
| |
| endmenu |
| |
| config LOG_PRINTK |
| bool "Enable processing of printk messages." |
| help |
| LOG_PRINTK messages are formatted in place and logged unconditionally. |
| |
| config LOG_PRINTK_MAX_STRING_LENGTH |
| int "Maximum string length supported by LOG_PRINTK" |
| depends on LOG_PRINTK |
| depends on (!LOG_IMMEDIATE || USERSPACE) |
| default 128 |
| help |
| Array is allocated on the stack. |
| |
| config LOG_IMMEDIATE |
| bool "Enable synchronous processing" |
| help |
| When enabled log is processed in the context of the call. It impacts |
| performance of the system since time consuming operations are |
| performed in the context of the log entry (e.g. high priority |
| interrupt).Logger backends must support exclusive access to work |
| flawlessly in that mode because one log operation can be interrupted |
| by another one in the higher priority context. |
| |
| config LOG_ENABLE_FANCY_OUTPUT_FORMATTING |
| depends on MINIMAL_LIBC |
| bool "Format strings with minimal libc _prf() instead of _vprintk()" |
| help |
| Selecting this option will choose more robust _prf() function from |
| minimal libc for handling format strings instead of the _vprintk() |
| function. Choosing this option adds around ~3K flash and ~250 bytes on |
| stack. |
| |
| if !LOG_IMMEDIATE |
| |
| choice |
| prompt "Log full strategy" |
| |
| config LOG_MODE_OVERFLOW |
| bool "Oldest logs are discarded" |
| |
| config LOG_MODE_NO_OVERFLOW |
| bool "New logs are dropped" |
| |
| endchoice |
| |
| config LOG_BLOCK_IN_THREAD |
| bool "On log full block in thread context" |
| help |
| When enabled logger will block (if in the thread context) when |
| internal logger buffer is full and new message cannot be allocated. |
| |
| if LOG_BLOCK_IN_THREAD |
| |
| config LOG_BLOCK_IN_THREAD_TIMEOUT_MS |
| int "Maximum time (in milliseconds) thread can be blocked" |
| default 1000 |
| range -1 10000 |
| help |
| If new buffer for a log message cannot be allocated in that time, log |
| message is dropped. Forever blocking (-1) is possible however may lead |
| to the logger deadlock if logging is enabled in threads used for |
| logging (e.g. logger or shell thread). |
| |
| endif # LOG_BLOCK_IN_THREAD |
| |
| config LOG_PROCESS_TRIGGER_THRESHOLD |
| int "Amount of buffered logs which triggers processing thread." |
| default 10 |
| help |
| When number of buffered messages reaches the threshold thread is waken |
| up. Log processing thread ID is provided during log initialization. |
| Set 0 to disable the feature. If LOG_PROCESS_THREAD is enabled then |
| this threshold is used by the internal thread. |
| |
| config LOG_PROCESS_THREAD |
| bool "Enable internal thread for log processing" |
| depends on MULTITHREADING |
| default y |
| help |
| When enabled thread is created by the logger subsystem. Thread is |
| waken up periodically (see LOG_PROCESS_THREAD_SLEEP_MS) and whenever |
| number of buffered messages exceeds the threshold (see |
| LOG_PROCESS_TRIGGER_THR). |
| |
| if LOG_PROCESS_THREAD |
| |
| config LOG_PROCESS_THREAD_SLEEP_MS |
| int "Set internal log processing thread sleep period" |
| default 1000 |
| help |
| Log processing thread sleeps for requested period given in |
| milliseconds. When waken up, thread process any buffered messages. |
| |
| config LOG_PROCESS_THREAD_STACK_SIZE |
| int "Stack size for the internal log processing thread" |
| default 2048 if COVERAGE_GCOV |
| default 1024 if NO_OPTIMIZATIONS |
| default 1024 if XTENSA |
| default 4096 if (X86 && X86_64) |
| default 768 |
| help |
| Set the internal stack size for log processing thread. |
| |
| endif # LOG_PROCESS_THREAD |
| |
| config LOG_BUFFER_SIZE |
| int "Number of bytes dedicated for the logger internal buffer." |
| default 1024 |
| range 128 65536 |
| help |
| Number of bytes dedicated for the logger internal buffer. |
| |
| config LOG_DETECT_MISSED_STRDUP |
| bool "Detect missed handling of transient strings" |
| default y if !LOG_IMMEDIATE |
| help |
| If enabled, logger will assert and log error message is it detects |
| that string format specifier (%s) and string address which is not from |
| read only memory section and not from pool used for string duplicates. |
| String argument must be duplicated in that case using log_strdup(). |
| Detection is performed during log processing thus it does not impact |
| logging timing. |
| |
| config LOG_STRDUP_MAX_STRING |
| int "Longest string that can be duplicated using log_strdup()" |
| default 46 if NETWORKING |
| default 32 |
| help |
| Longer strings are truncated. |
| |
| config LOG_STRDUP_BUF_COUNT |
| int "Number of buffers in the pool used by log_strdup()" |
| default 4 |
| help |
| Number of calls to log_strdup() which can be pending before flushed |
| to output. If "<log_strdup alloc failed>" message is seen in the log |
| output, it means this value is too small and should be increased. |
| Each entry takes CONFIG_LOG_STRDUP_MAX_STRING bytes of memory plus |
| some additional fixed overhead. |
| |
| config LOG_STRDUP_POOL_PROFILING |
| bool "Enable profiling of pool used for log_strdup()" |
| help |
| When enabled, maximal utilization of the pool is tracked. It can |
| be read out using shell command. |
| |
| endif # !LOG_IMMEDIATE |
| |
| config LOG_DOMAIN_ID |
| int "Domain ID" |
| default 0 |
| range 0 7 |
| help |
| In multicore system each application/core must have unique domain ID. |
| |
| config LOG_CMDS |
| bool "Enable shell commands" |
| depends on SHELL |
| default y if SHELL |
| |
| config LOG_FRONTEND |
| bool "Enable frontend" |
| default n |
| select LOG_IMMEDIATE |
| help |
| When enabled, logs are redirected to a custom frontend instead |
| of being processed by the logger. |
| |
| config LOG_BACKEND_UART |
| bool "Enable UART backend" |
| depends on UART_CONSOLE |
| default y if !SHELL_BACKEND_SERIAL |
| help |
| When enabled backend is using UART to output logs. |
| |
| config LOG_BACKEND_UART_SYST_ENABLE |
| bool "Enable UART syst backend" |
| depends on LOG_BACKEND_UART |
| depends on LOG_MIPI_SYST_ENABLE |
| help |
| When enabled backend is using UART to output syst format logs. |
| |
| config LOG_BACKEND_SWO |
| bool "Enable Serial Wire Output (SWO) backend" |
| depends on HAS_SWO |
| help |
| When enabled, backend will use SWO for logging. |
| |
| if LOG_BACKEND_SWO |
| |
| config LOG_BACKEND_SWO_FREQ_HZ |
| int "Set SWO output frequency" |
| default 0 |
| help |
| Set SWO output frequency. Value 0 will select maximum frequency |
| supported by the given MCU. Not all debug probes support high |
| frequency SWO operation. In this case the frequency has to be set |
| manually. |
| |
| SWO value defined by this option will be configured at boot. Most SWO |
| viewer programs will configure SWO frequency when attached to the |
| debug probe. Such configuration will persist only until the device |
| reset. To ensure flawless operation the frequency configured here and |
| by the SWO viewer program has to match. |
| |
| config LOG_BACKEND_SWO_SYST_ENABLE |
| bool "Enable SWO syst backend" |
| depends on LOG_MIPI_SYST_ENABLE |
| help |
| When enabled backend is using SWO to output syst format logs. |
| |
| endif # LOG_BACKEND_SWO |
| |
| config LOG_BACKEND_RTT |
| bool "Enable Segger J-Link RTT backend" |
| depends on USE_SEGGER_RTT |
| default y if !SHELL_BACKEND_RTT |
| help |
| When enabled, backend will use RTT for logging. This backend works on a per |
| message basis. Only a whole message (terminated with a carriage return: '\r') |
| is transferred to up-buffer at once depending on available space and |
| selected mode. |
| In panic mode backend always blocks and waits until there is space |
| in up-buffer for a message and message is transferred to host. |
| |
| if LOG_BACKEND_RTT |
| |
| choice |
| prompt "Logger behavior" |
| default LOG_BACKEND_RTT_MODE_BLOCK |
| |
| config LOG_BACKEND_RTT_MODE_DROP |
| bool "Drop messages that do not fit in up-buffer." |
| help |
| If there is not enough space in up-buffer for a message, drop it. |
| Number of dropped messages will be logged. |
| Increase up-buffer size helps to reduce dropping of messages. |
| |
| config LOG_BACKEND_RTT_MODE_BLOCK |
| bool "Block until message is transferred to host." |
| help |
| Waits until there is enough space in the up-buffer for a message. |
| |
| config LOG_BACKEND_RTT_SYST_ENABLE |
| bool "Enable RTT syst backend" |
| depends on LOG_MIPI_SYST_ENABLE |
| help |
| When enabled backend is using RTT to output syst format logs. |
| |
| endchoice |
| |
| if LOG_BACKEND_RTT_MODE_DROP |
| |
| config LOG_BACKEND_RTT_MESSAGE_SIZE |
| int "Size of internal buffer for storing messages." |
| range 32 256 |
| default 128 |
| help |
| This option defines maximum message size transferable to up-buffer. |
| |
| endif # LOG_BACKEND_RTT_MODE_DROP |
| |
| if LOG_BACKEND_RTT_MODE_BLOCK |
| |
| config LOG_BACKEND_RTT_OUTPUT_BUFFER_SIZE |
| int "Size of the output buffer" |
| default 16 |
| help |
| Buffer is used by log_output module for preparing output data (e.g. |
| string formatting). |
| |
| config LOG_BACKEND_RTT_RETRY_CNT |
| int "Number of retries" |
| default 4 |
| help |
| Number of TX retries before dropping the data and assuming that |
| RTT session is inactive. |
| |
| config LOG_BACKEND_RTT_RETRY_DELAY_MS |
| int "Delay between TX retries in milliseconds" |
| default 5 |
| help |
| Sleep period between TX retry attempts. During RTT session, host pulls |
| data periodically. Period starts from 1-2 milliseconds and can be |
| increased if traffic on RTT increases (also from host to device). In |
| case of heavy traffic data can be lost and it may be necessary to |
| increase delay or number of retries. |
| |
| endif # LOG_BACKEND_RTT_MODE_BLOCK |
| |
| config LOG_BACKEND_RTT_BUFFER |
| int "Buffer number used for logger output." |
| range 0 SEGGER_RTT_MAX_NUM_UP_BUFFERS |
| default 0 |
| help |
| Select index of up-buffer used for logger output, by default it uses |
| terminal up-buffer and its settings. |
| |
| if LOG_BACKEND_RTT_BUFFER > 0 |
| |
| config LOG_BACKEND_RTT_BUFFER_SIZE |
| int "Size of reserved up-buffer for logger output." |
| default 1024 |
| help |
| Specify reserved size of up-buffer used for logger output. |
| |
| endif # LOG_BACKEND_RTT_BUFFER |
| |
| |
| # Enable processing of printk calls using log if terminal buffer is used. |
| # Same buffer is used by RTT console. If printk would go through RTT console |
| # that will lead to corruption of RTT data which is not protected against being |
| # interrupted by an interrupt. |
| config LOG_BACKEND_RTT_FORCE_PRINTK |
| bool |
| default y if LOG_BACKEND_RTT_BUFFER = 0 |
| select LOG_PRINTK |
| |
| endif # LOG_BACKEND_RTT |
| |
| config LOG_BACKEND_NATIVE_POSIX |
| bool "Enable native backend" |
| depends on ARCH_POSIX |
| help |
| Enable backend in native_posix |
| |
| config LOG_BACKEND_XTENSA_SIM |
| bool "Enable xtensa simulator backend" |
| depends on SOC_XTENSA_SAMPLE_CONTROLLER |
| help |
| Enable backend in xtensa simulator |
| |
| config LOG_BACKEND_XTENSA_OUTPUT_BUFFER_SIZE |
| int "Size of the output buffer" |
| default 16 |
| depends on LOG_BACKEND_XTENSA_SIM |
| help |
| Buffer is used by log_output module for preparing output data (e.g. |
| string formatting). |
| |
| config LOG_BACKEND_NET |
| bool "Enable networking backend" |
| depends on NETWORKING |
| select NET_CONTEXT_NET_PKT_POOL |
| help |
| Send syslog messages to network server. |
| See RFC 5424 (syslog protocol) and RFC 5426 (syslog over UDP) |
| specifications for details. |
| |
| if LOG_BACKEND_NET |
| |
| config LOG_BACKEND_NET_SERVER |
| string "Syslog server IP address" |
| help |
| This can be either IPv4 or IPv6 address. |
| Server listen UDP port number can be configured here too. |
| Following syntax is supported: |
| 192.0.2.1:514 |
| 192.0.2.42 |
| [2001:db8::1]:514 |
| [2001:db8::2] |
| 2001:db::42 |
| |
| config LOG_BACKEND_NET_MAX_BUF |
| int "How many network buffers to allocate for sending messages" |
| range 3 256 |
| default 3 |
| help |
| Each syslog message should fit into a network packet that will be |
| sent to server. This number tells how many syslog messages can be |
| in transit to the server. |
| |
| config LOG_BACKEND_NET_MAX_BUF_SIZE |
| int "Max syslog message size" |
| range 64 1180 |
| default 1180 if NET_IPV6 |
| default 480 if NET_IPV4 |
| default 256 |
| help |
| As each syslog message needs to fit to UDP packet, set this value |
| so that messages are not truncated. |
| The RFC 5426 recommends that for IPv4 the size is 480 octets and for |
| IPv6 the size is 1180 octets. As each buffer will use RAM, the value |
| should be selected so that typical messages will fit the buffer. |
| |
| config LOG_BACKEND_NET_SYST_ENABLE |
| bool "Enable networking syst backend" |
| depends on LOG_MIPI_SYST_ENABLE |
| help |
| When enabled backend is using networking to output syst format logs. |
| |
| endif # LOG_BACKEND_NET |
| |
| config LOG_BACKEND_SHOW_COLOR |
| bool "Enable colors in the backend" |
| depends on LOG_BACKEND_UART || LOG_BACKEND_NATIVE_POSIX || LOG_BACKEND_RTT \ |
| || LOG_BACKEND_SWO || LOG_BACKEND_XTENSA_SIM |
| default y |
| help |
| When enabled selected backend prints errors in red and warning in yellow. |
| |
| config LOG_BACKEND_FORMAT_TIMESTAMP |
| bool "Enable timestamp formatting in the backend" |
| depends on LOG_BACKEND_UART || LOG_BACKEND_NATIVE_POSIX || LOG_BACKEND_RTT \ |
| || LOG_BACKEND_SWO || LOG_BACKEND_XTENSA_SIM |
| default y |
| help |
| When enabled timestamp is formatted to hh:mm:ss:ms,us. |
| |
| endif # LOG_MINIMAL |
| endif # LOG |