4. blog

4.1. 概述

blog 是一款超轻量级的日志组件,非常适合对资源敏感的软件项目.

4.2. 功能介绍

blog 将log简化成3类,分别是组件、文件、私有log,且分别支持软件动态修改、宏彻底关闭方案(不占用rom)。下文统称动态修改为软开关,宏彻底关闭方案为静态开关。

  • 组件log管理 该log优先级最高,如下的文件log和私有log均受此开关的束缚

  • 文件log管理 该log优先级中,如下的私有log均受此开关的束缚,且文件log受到组件log的管理。

  • 私有log管理 该log优先级最低,受组件log和文件log管理

4.3. log等级说明

按照等级高低分别如下,其中all最低,即所有log均输出

all : 所有log均输出,其实等同于all
debug : debug及以上
info : info及以上
warn : warn及以上
error : error及以上
assert : assert及以上
never: 所有log均不输出,其实等同于assert

4.4. 使用方法

包含必要的头文件 #include <blog.h>然后分别设置组件log、文件log、私有log。

#include <blog.h>
BLOG_DECLARE(blog_testc2);

void func(void)
{
    blog_debug("blog_testc2 debug\r\n");
    blog_info("blog_testc2 info\r\n");
    blog_warn("blog_testc2 warn\r\n");
    blog_error("blog_testc2 error\r\n");
    blog_assert("blog_testc2 assert\r\n");

    blog_debug_user(blog_testc2,"blog_testc2 debug user\r\n");
    blog_info_user(blog_testc2,"blog_testc2 info user\r\n");
    blog_warn_user(blog_testc2,"blog_testc2 warn user\r\n");
    blog_error_user(blog_testc2,"blog_testc2 error user\r\n");
    blog_assert_user(blog_testc2,"blog_testc2 assert user\r\n");
}
  • 组件log开关

    • 静态开关 在相应的 proj_config.mk 文件目录下,LOG_ENABLED_COMPONENTS配置上增加对应组件的名字 例如这里需要增加blog_testa blog_testb blog_testc组件静态开关,其他组件默认关闭 LOG_ENABLED_COMPONENTS:=blog_testa blog_testb blog_testc

    • 软件开关 通过输入如下命令来使能log输出等级 形如,logset level component_name例如: blogset assert blog_testc

  • 文件log管理

    • 静态开关 在对应的*.c文件中,加入此行代码,注意,不管是开或者关,必须选择一种。 默认就是开 #define BLOG_HARD_DECLARE_DISABLE 1    //

    • 软件开关 通过输入如下命令来使能log输出等级 形如,logset level component_name.file_name例如: blogset info blog_testc.blog_testc2_full

  • 私有log管理

    • 静态开关 使用就增加BLOG_DECLARE(…),不用直接不增加此行即可。 BLOG_DECLARE(blog_testc2);    // 打开,其中 "blog_testc2"为用户自定义

    • 软件开关 通过输入如下命令来使能log输出等级 形如,logset level component_name.file_name.pri_name例如: blogset debug blog_testc.blog_testc2_full.blog_testc2

4.5. 总结