nuttx-apps/logging/embedlog/Kconfig
2023-01-05 21:42:15 +08:00

226 lines
6.9 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
menuconfig LOGGING_EMBEDLOG
bool "embedlog library"
default n
---help---
Highly configurable logger for embedded devices. Documentation and
more info available on: https://embedlog.bofc.pl (don't worry,
it's in english). Note: none of the options define how embedlog
will behave, it will simply configure whether given feature can be
enabled in runtime or no. So enabling CONFIG_EMBEDLOG_ENABLE_TIMESTAMP
won't make logger to add timestamp to every message - you will have to
also enable timestamp in runtime object. But when
CONFIG_EMBEDLOG_ENABLE_TIMESTAMP is disabled, setting timestamp print
in runtime will make no difference and timestamp still will not be
printed.
Library is licensed under BSD 2-clause license. See LICENSE file in
the downloaded code for license details
if LOGGING_EMBEDLOG
config EMBEDLOG_ENABLE_PTHREAD
bool "Enable thread safety"
depends on !DISABLE_PTHREAD
default n
---help---
When enabled, you will be able to configure embedlog to use
EL_THREAD_SAFE option, which will provide full thread safety in all
circumstances. When printing to stdout or syslog, embedlog is
half thread-safe. Buffer is allocated for each print call, so
different calls will not interfere with each other, but once
buffer is handed over to the kernel, logs might get mangled.
To make sure this does not happen, enable this and enable
EL_THREAD_SAFE option in runtime.
When multiple threads print to single file, this must be
enabled, as there are global states in each 'el' object. If two
'el' objects print into two separate files, you do not need
thread safety.
comment "DISABLE_PTHREAD must be disabled to use thread safety"
depends on DISABLE_PTHREAD
config EMBEDLOG_ENABLE_OUT_FILE
bool "Enable logging to file"
default n
---help---
If enabled, you will be able to store logs in a file (like on
sdcard). Log rotation is available as well. Library automatically
handles cases when files are deleted or mountpoint disappears and
appear again (like sd card switch). Disabling this will result in
smaller code.
if EMBEDLOG_ENABLE_OUT_FILE
config EMBEDLOG_ENABLE_BINARY_LOGS
bool "Enable binary logs"
default n
---help---
When enabled, you will be able to print binary data into file
to save space (on block device). Note: you will not be able to
read such logs with tools like 'less' or 'grep'. You will need to
create own reader or use 'hexdump'.
endif
config EMBEDLOG_ENABLE_OUT_STDERR
bool "Enable logging to standard error"
default y
---help---
If enabled, you will be able to log messages to standard error (stderr)
and/or standard output (stdout).
config EMBEDLOG_ENABLE_OUT_TTY
bool "Enable printing to tty device"
default y
---help---
If enabled, you will be able to configure logger to print directly
to tty serial device (like /dev/ttyS1). This might be useful if you
want to have nsh in one tty and logs on the other. This is suitable
if only one task will be printing logs to one tty, if you want
multiple tasks to print into one tty, it's better to enable syslog
printing and the syslog handle it.
config EMBEDLOG_ENABLE_OUT_CUSTOM
bool "Enable custom logging function"
default n
---help---
When enabled, you will be able to define own function that accepts
fully constructed log message as 'const char *'
config EMBEDLOG_ENABLE_TIMESTAMP
bool "Enable timestamp in messages"
default y
---help---
If enabled, you will be able to configure logger to add timestamp to
every logged message.
if EMBEDLOG_ENABLE_TIMESTAMP
config EMBEDLOG_ENABLE_FRACTIONS
bool "Enable fractions of seconds"
default y
---help---
If enabled, you will be able to configure logger to add fractions of
seconds to timestamp
endif
config EMBEDLOG_ENABLE_PREFIX
bool "Enable prefix"
default n
---help---
If enabled, you will be able to set prefix that will be added to
each message logged by embedlog. Useful when multiple tasks print
to one tty (via syslog) and you need an easy way to know which program
printed given log message.
if EMBEDLOG_ENABLE_PREFIX
config EMBEDLOG_PREFIX_MAX
int "Max prefix length"
default 16
---help---
Maximum length of prefix that can be printed. If prefix exceeds this
value it will be truncated.
endif # EMBEDLOG_ENABLE_PREFIX
config EMBEDLOG_ENABLE_FINFO
bool "Enable file info"
default y
---help---
If enabled, you will be able to turn on information about location
of the log. This uses __FILE__ and __LINE__ macros.
if EMBEDLOG_ENABLE_FINFO
config EMBEDLOG_FLEN_MAX
int "Max file name in finfo"
default 16
---help---
finfo look like this
[filename.c:123]
this parameter defines how long "filename.c" can be, if file name
exceeds this value it will be truncated.
config EMBEDLOG_ENABLE_FUNCINFO
bool "Enable function info in log"
default y
---help---
When enabled, embedlog can be configured to add information
about function name from which log originated. This uses __func__
macro, so you need compiler that supports that. This macro was
introduced in c99 standard.
if EMBEDLOG_ENABLE_FUNCINFO
config EMBEDLOG_FUNCLEN_MAX
int "Max length of function to print"
default 16
---help---
Max length of function name to print. If function is longer than
this value, it will be truncated. This directly impacts size of
buffer for each 'el' object allocated.
endif # EMBEDLOG_ENABLE_FUNCINFO
endif # EMBEDLOG_ENABLE_FINFO
comment "Function info requires EMBEDLOG_ENABLE_FINFO"
depends on !EMBEDLOG_ENABLE_FINFO
config EMBEDLOG_ENABLE_COLORS
bool "Enable output colors"
default n
---help---
If enabled, you will be able to turn on ANSI colors for messages
with different log severities. Disabling this will result in smaller
code.
config EMBEDLOG_LOG_MAX
int "Max length of log message"
default 128
---help---
Maximum length of single log message. This defines length of finall
message, so message "foo() returned %s" may consume for example
200 bytes since '%s' may be a long string. Metadata like timestamp
or file info uses this space too. Output log will be truncated if
it exceeds this value. Lowering/increasing will result in
appropriate higher/lower stack usage.
config EMBEDLOG_MEM_LINE_SIZE
int "Number of bytes in line"
default 16
---help---
How many bytes of memory to print in a single line of el_pmemory call.
Check https://embedlog.bofc.pl/manuals/el_pmemory.3.html
for more information about this.
config EMBEDLOG_DEMO_PROGRAMS
bool "Compile demo programs"
default n
---help---
Compile demo programs that visualise how embedlog works. Also good
for checking if embedlog behaves correctly.
if EMBEDLOG_DEMO_PROGRAMS
config EMBEDLOG_DEMO_PROGRAMS_PRIORITY
int "embedlog demo programs task priority"
default 100
config EMBEDLOG_DEMO_PROGRAMS_STACKSIZE
int "embedlog demo programs stack size"
default DEFAULT_TASK_STACKSIZE
endif # EMBEDLOG_DEMO_PROGRAMS
endif # LOGGING_EMBEDLOG