Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions subsys/shell/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -297,13 +297,52 @@ config SHELL_LOG_BACKEND_CUSTOM
It allows to provide custom implementation of multiplexing logging messages
with shell data.

config SHELL_LOG_OUTPUT_TIMESTAMP
bool "Log output timestamp"
default y
depends on SHELL_LOG_BACKEND
help
Enable timestamp in log output.

config SHELL_LOG_FORMAT_TIMESTAMP
bool "Format timestamp"
default y
depends on SHELL_LOG_BACKEND
help
Enable timestamp formatting.

config SHELL_LOG_OUTPUT_LEVEL
bool "Log output level"
default y
depends on SHELL_LOG_BACKEND
help
Enable log level in log output.

config SHELL_LOG_OUTPUT_CRLF_NONE
bool "Log output CRLF none"
depends on SHELL_LOG_BACKEND
help
Do not modify CRLF characters in log output.

config SHELL_LOG_OUTPUT_CRLF_LFONLY
bool "Log output CRLF LF only"
depends on SHELL_LOG_BACKEND
help
Convert CRLF to LF in log output.

config SHELL_LOG_OUTPUT_THREAD
bool "Log output thread"
default y
depends on SHELL_LOG_BACKEND
help
Enable logging thread id or name

config SHELL_LOG_OUTPUT_SKIP_SOURCE
bool "Log output skip source"
depends on SHELL_LOG_BACKEND
help
Skip outputting source in log output.

config SHELL_AUTOSTART
bool "Auto-start shell at boot"
default y
Expand Down
16 changes: 11 additions & 5 deletions subsys/shell/shell_log_backend.c
Original file line number Diff line number Diff line change
Expand Up @@ -155,17 +155,23 @@ static bool copy_to_pbuffer(struct mpsc_pbuf_buffer *mpsc_buffer,
return true;
}

/* Compile-time computed shell log output flags */
#define SHELL_LOG_BASE_FLAGS \
((IS_ENABLED(CONFIG_SHELL_LOG_OUTPUT_TIMESTAMP) ? LOG_OUTPUT_FLAG_TIMESTAMP : 0) | \
(IS_ENABLED(CONFIG_SHELL_LOG_FORMAT_TIMESTAMP) ? LOG_OUTPUT_FLAG_FORMAT_TIMESTAMP : 0) | \
(IS_ENABLED(CONFIG_SHELL_LOG_OUTPUT_LEVEL) ? LOG_OUTPUT_FLAG_LEVEL : 0) | \
(IS_ENABLED(CONFIG_SHELL_LOG_OUTPUT_CRLF_NONE) ? LOG_OUTPUT_FLAG_CRLF_NONE : 0) | \
(IS_ENABLED(CONFIG_SHELL_LOG_OUTPUT_CRLF_LFONLY) ? LOG_OUTPUT_FLAG_CRLF_LFONLY : 0) | \
(IS_ENABLED(CONFIG_SHELL_LOG_OUTPUT_THREAD) ? LOG_OUTPUT_FLAG_THREAD : 0) | \
(IS_ENABLED(CONFIG_SHELL_LOG_OUTPUT_SKIP_SOURCE) ? LOG_OUTPUT_FLAG_SKIP_SOURCE : 0))

static void process_log_msg(const struct shell *sh,
const struct log_output *log_output,
union log_msg_generic *msg,
bool locked, bool colors)
{
unsigned int key = 0;
uint32_t flags = LOG_OUTPUT_FLAG_LEVEL | LOG_OUTPUT_FLAG_TIMESTAMP | LOG_OUTPUT_FLAG_THREAD;

if (IS_ENABLED(CONFIG_SHELL_LOG_FORMAT_TIMESTAMP)) {
flags |= LOG_OUTPUT_FLAG_FORMAT_TIMESTAMP;
}
uint32_t flags = SHELL_LOG_BASE_FLAGS;

if (colors) {
flags |= LOG_OUTPUT_FLAG_COLORS;
Expand Down