消息输出模式
subsys/logging/Kconfig.mode
消息输出模式决定了日志系统的效能和消息的输出方式,总计有4总模式,只能选择一个不能同时存在
CONFIG_LOG_MODE_DEFERRED=y
延迟输出模式,是日志系统默认的输出方式。前端异步发送,耗时的处理被延迟到日志系统内的线程中处理,这种方式对应用的影响最小。CONFIG_LOG_MODE_IMMEDIATE=y
立即输出模式,就在当前的上下文中输出消息。前端调用后端同步发送,直接影响调用者的效能。CONFIG_LOG_MODE_MINIMAL=y
最小实现模式,日志直接通过printk
同步输出。没有标签,时间戳,不支持颜色和异步延迟,不支持运行时过滤。只有非常简单的日志等级标识,示例E: Error message example.
W: Warning message example.
I: Info message example.CONFIG_LOG_FRONTEND=y
输出被重定向到自定前端。
过滤
subsys/logging/Kconfig.filtering
过滤的配置决定日志系统过滤器的特性,以下所有配置项的范围都为
CONFILG_<MODULE>_LOG_LEVEL
:模块的过滤等级,默认为3。CONFIG_LOG_DEFAULT_LEVEL
:默认的过滤等级,默认为3。
日志处理
subsys/logging/Kconfig.processing
CONFIG_LOG_PRINTK=y
:printk
的输出被重定向到日志系统,默认为n
。CONFIG_LOG_PRINTK_MAX_STRING_LENGTH=256
:printk
可处理的最大字符串长度,超过将被截断。默认为128字节,使用的是堆栈空间。CONFIG_LOG_MODE_OVERFLOW=y
:日志消息溢出处理方式,y
表示丢掉老的保留新的,n
表示丢掉新的。默认为y
。CONFIG_LOG_BLOCK_IN_THREAD=y
:前端写消息可等待,如果等待不到再做溢出处理。搭配CONFIG_LOG_BLOCK_IN_THREAD_TIMEOUT_MS
进行等待时间设置,默认为n
不等待。CONFIG_LOG_BLOCK_IN_THREAD_TIMEOUT_MS
前端写消息等待时间,可设置范围-1~10000
,单位为毫秒。-1
表示永远等待,0
表示不等待。默认为1000
,等待1秒。CONFIG_LOG_PROCESS_TRIGGER_THRESHOLD=3
消息输出的阈值,当日志系统的缓存的消息超过该阈值时才会向后端输出,默认为10
。该配置和CONFIG_LOG_PROCESS_THREAD_SLEEP_MS
只要有一个满足就会使用后端输出。CONFIG_LOG_PROCESS_THREAD=y
:日志系统自带线程用于延迟输出,默认为y
。当设置为n
时,需要用户调用log_process
进行消息输出处理。CONFIG_LOG_PROCESS_THREAD_STARTUP_DELAY_MS=100
:日志系统自带线程创建后延迟启动时间,默认为0
不延迟。CONFIG_LOG_PROCESS_THREAD_SLEEP_MS=10
:日志系统自带线程唤醒周期,按该间隔进行日志输出处理,该事件越短显示就越从前端输入到后端输出的间隔就越短。默认为1000
也就是1秒。当希望LOG输出比较即时时可以缩段该时间。CONFIG_LOG_BUFFER_SIZE
:日志系统消息缓存大小,可配置范围128~65536
,默认为1024
,该项越大越不容易丢日志。CONFIG_LOG_TRACE_SHORT_TIMESTAMP=y
使用时间戳,默认为y
时间戳的长度为24bit。配置为n
时表示不使用时间戳。CONFIG_LOG_TIMESTAMP_64BIT=y
:默认为n
,配置为y
时使用64bit时间戳。CONFIG_LOG_SPEED=y
:默认为n
,配置为y
时日志系统牺牲空间换取执行时间的提升。
格式
subsys/logging/Kconfig.processing
LOG_FUNC_NAME_PREFIX_*
:日志中加入函数名标签,只对LOG_*
有效,对LOG_HEXDUMP_*
无效。CONFIG_LOG_FUNC_NAME_PREFIX_ERR=y
在ERROR等级消息中加入函数名,默认为n
。CONFIG_LOG_FUNC_NAME_PREFIX_WRN=y
在WARNING等级消息中加入函数名,默认为n
。CONFIG_LOG_FUNC_NAME_PREFIX_INF=y
在INF等级消息中加入函数名,默认为n
。CONFIG_LOG_FUNC_NAME_PREFIX_DBG=y
在DEBUG等级消息中加入函数名,默认为y
。
CONFIG_LOG_BACKEND_SHOW_COLOR=y
:后端日志消息显示颜色,默认为y
要显示。ERROR等级的显示为红色,WRANING等级的显示为黄色。颜色对shell_log_backend
无效。CONFIG_LOG_INFO_COLOR_GREEN=y
:后端INFO等级消息显示为绿色,默认为不显示颜色。
后端
subsys/logging/Kconfig.backend
在没有配置CONFIG_SHELL=y
的情况下默认开启CONFIG_SHELL_LOG_BACKEND
使用shell作为LOG的后端。
CONFIG_LOG_BACKEND_UART=y
启用串口后端,默认为n
启用。当没有开启Shell时默认使用UART作为LOG后端。CONFIG_LOG_BACKEND_NET
启用网络后端,默认为n
不启用。CONFIG_LOG_BACKEND_FS
启用文件系统 后端,默认为n
不启用。
参考
https://docs.zephyrproject.org/latest/services/logging/index.html