消息输出模式
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