zephyr/subsys/logging/Kconfig

380 lines
11 KiB
Plaintext

#
# Copyright (c) 2016 Intel Corporation
#
# SPDX-License-Identifier: Apache-2.0
#
menu "Logging Options"
config SYS_LOG
bool "Enable Logging"
depends on PRINTK
help
Global switch for logging, when turned off log calls will not be
executed.
config SYS_LOG_SHOW_TAGS
bool "Prepend level tags to logs"
depends on SYS_LOG
default y
help
Prefixes all log lines with an identifier to the log level submitted in
the C code.
config SYS_LOG_SHOW_COLOR
bool "Use colored logs"
depends on SYS_LOG
help
Use color in the logs. This requires an ANSI capable terminal.
config SYS_LOG_DEFAULT_LEVEL
int "Default log level"
depends on SYS_LOG
default 0
range 0 4
help
Sets log level for modules which don't specify it explicitly. When
set to 0 it means log wont be activated for those modules.
Levels are:
0 OFF, do not write by default
1 ERROR, default to only write SYS_LOG_ERR
2 WARNING, default to write SYS_LOG_WRN in addition to previous level
3 INFO, default to write SYS_LOG_INF in addition to previous levels
4 DEBUG, default to write SYS_LOG_DBG in addition to previous levels
config SYS_LOG_OVERRIDE_LEVEL
int "Override lowest log level"
depends on SYS_LOG
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 SYS_LOG_ERR
2 WARNING, override to write SYS_LOG_WRN in addition to previous level
3 INFO, override to write SYS_LOG_INF in addition to previous levels
4 DEBUG, override to write SYS_LOG_DBG in addition to previous levels
config SYS_LOG_EXT_HOOK
bool "Use external hook function for logging"
depends on SYS_LOG
help
Use external hook function for logging.
config SYS_LOG_BACKEND_NET
bool "Networking syslog backend"
depends on SYS_LOG && NETWORKING
select SYS_LOG_EXT_HOOK
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 SYS_LOG_BACKEND_NET
config SYS_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 SYS_LOG_BACKEND_NET_MAX_BUF
int "How many network buffers to allocate for sending messages"
range 3 256
default 3
help
Each syslog message will occupy one network buffer.
config SYS_LOG_BACKEND_NET_MAX_BUF_SIZE
int "Max syslog message size"
range 64 1180
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.
The total allocated memory will be
SYS_LOG_BACKEND_NET_MAX_BUF * SYS_LOG_BACKEND_NET_MAX_BUF_SIZE
endif
config LOG
bool "Enable Logger"
help
Global switch for the logger, when turned off log calls will not be
compiled in.
if LOG
config LOG_RUNTIME_FILTERING
bool "Enable runtime reconfiguration of the logger"
help
Allow runtime configuration of maximal, independent severity
level for instance.
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_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_FUNCTION_NAME
bool "Prepend log message with function name"
default y
help
Prepends log message with function name.
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
default 128
help
Array is allocated on the stack.
config LOG_INPLACE_PROCESS
bool "Enable in place 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). When enabled LOG_BUFFER_SIZE can be reduced. Logger
backends must support exclusive access to work flawlessly in that mode
because one log operation can be interrupted by another one in higher
priority context.
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_PRIO
int "Priority of the log internal thread"
default -2
help
Change with care since log processing can be time consuming thus it
should be on low priority.
config LOG_PROCESS_THREAD_STACK_SIZE
int "Stack size for the internal log processing thread"
default 768
help
Set the internal stack size for log processing thread.
endif
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_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
When pool is empty log_strdup() returns warning string instead of the
copy.
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"
default y if SHELL
config LOG_BACKEND_UART
bool "Enable UART backend"
depends on UART_CONSOLE
default y
help
When enabled backend is using UART to output logs.
config LOG_BACKEND_RTT
bool "Enable Segger J-Link RTT backend"
depends on USE_SEGGER_RTT
default y
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 behaviour"
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
and until the message is completely transferred to the host.
endchoice
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.
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
endif # LOG_BACKEND_RTT
config LOG_BACKEND_NATIVE_POSIX
bool "Enable native backend"
depends on ARCH_POSIX
default n
help
Enable backend in native_posix
config LOG_BACKEND_SHOW_COLOR
bool "Enable colors in the backend"
depends on LOG_BACKEND_UART || LOG_BACKEND_NATIVE_POSIX || LOG_BACKEND_RTT
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
default y
help
When enabled timestamp is formatted to hh:mm:ss:ms,us.
endif
endmenu