bl_iot_sdk/docs/html/Components/Middleware/log/blog.html
2020-10-26 20:43:20 +08:00

360 lines
17 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html class="writer-html5" lang="zh" >
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>8. blog &mdash; BL602 IoT SDK release_bl_iot_sdk_1.6.11-1-g66bb28da 文档</title>
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/style.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
<!--[if lt IE 9]>
<script src="../../../_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script>
<script src="../../../_static/jquery.js"></script>
<script src="../../../_static/underscore.js"></script>
<script src="../../../_static/doctools.js"></script>
<script src="../../../_static/language_data.js"></script>
<script type="text/javascript" src="../../../_static/js/theme.js"></script>
<link rel="index" title="索引" href="../../../genindex.html" />
<link rel="search" title="搜索" href="../../../search.html" />
<link rel="next" title="9. Security" href="../security/security.html" />
<link rel="prev" title="7. device tree" href="../dts/devicetree.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../../../index.html" class="icon icon-home" alt="Documentation Home"> BL602 IoT SDK
</a>
<div class="version">
release_bl_iot_sdk_1.6.11-1-g66bb28da
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="在文档中搜索" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Developer_Environment</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../Developer_Environment/Developer_Environment.html">1. Developer Environment</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Developer_Environment/BLFlashEnv/BLFlashEnv.html">2. BLFlashEnv</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Developer_Environment/freedom_studio/freedom_studio.html">3. Freedom Studio</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Developer_Environment/eclipse/eclipse.html">4. Eclipse</a></li>
</ul>
<p class="caption"><span class="caption-text">Examples</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/helloworld/helloworld.html">1. Helloword</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_aws/aws.html">2. aws</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_peripherals_gpio/GPIO.html">3. GPIO</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_peripherals_uart_echo/uart_echo.html">4. UART_echo</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_peripherals_uart_ioctl/uart_ioctl.html">5. UART_ioctl</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_protocols_http/http.html">6. Http client</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_protocols_httpc/httpc.html">7. Httpc client</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_storage_psm/psm.html">8. PSM</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_storage_romfs/romfs.html">9. Romfs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_system_cli/cli.html">10. cli</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_system_fdt/fdt.html">11. FDT</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_wifi/wifi.html">12. WiFi</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_ble/ble.html">13. BLE</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_mesh/mesh.html">14. Mesh</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/demo_blsync_ble/blsync_ble.html">15. BLSYNC-BLE</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../Examples/sdk_app_easyflash_boottimes/easyflash_boottimes.html">16. Easyflash4 boot times</a></li>
</ul>
<p class="caption"><span class="caption-text">Components</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../arch.html">1. arch</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../Command_line/helper.html">2. helper</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../Command_line/aos_cli.html">3. cli</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../Hal_drv/gpio.html">4. GPIO</a></li>
<li class="toctree-l1"><a class="reference internal" href="../bloop/bloop.html">5. BLOOP</a></li>
<li class="toctree-l1"><a class="reference internal" href="../blsync/blsync.html">6. BLSYNC</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dts/devicetree.html">7. device tree</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">8. blog</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#id1">8.1. 概述</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id2">8.2. 功能介绍</a></li>
<li class="toctree-l2"><a class="reference internal" href="#log">8.3. log等级说明</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id3">8.4. 使用方法</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id4">8.5. 总结</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../security/security.html">9. Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="../vfs/vfs.html">10. AOS VFS</a></li>
<li class="toctree-l1"><a class="reference internal" href="../yloop/yloop.html">11. yloop</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../Network/httpc/httpc.html">12. HTTPC</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../Network/https/https.html">13. HTTPS</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../Network/tls/tls.html">14. TLS</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../BLE/provision_WiFi/provision_WiFi.html">15. Provision_WiFi</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../BLE/mesh/mesh.html">16. Mesh</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../BLE/ble_stack/ble_stack.html">17. BLE</a></li>
</ul>
<p class="caption"><span class="caption-text">API</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../../../API/sys/cronalarms.html">1. cronalarms</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../API/wifi/wifi_mgmr.html">2. Wi-Fi Manager</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../../../index.html">BL602 IoT SDK</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../../../index.html" class="icon icon-home"></a> &raquo;</li>
<li><span class="section-number">8. </span>blog</li>
<li class="wy-breadcrumbs-aside">
<a href="../../../_sources/Components/Middleware/log/blog.rst.txt" rel="nofollow"> 查看页面源码</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="blog">
<h1><span class="section-number">8. </span>blog<a class="headerlink" href="#blog" title="永久链接至标题"></a></h1>
<div class="section" id="id1">
<h2><span class="section-number">8.1. </span>概述<a class="headerlink" href="#id1" title="永久链接至标题"></a></h2>
<p>blog 是一款超轻量级的日志组件,非常适合对资源敏感的软件项目.</p>
</div>
<div class="section" id="id2">
<h2><span class="section-number">8.2. </span>功能介绍<a class="headerlink" href="#id2" title="永久链接至标题"></a></h2>
<p>blog
将log简化成3类分别是组件、文件、私有log且分别支持软件动态修改、宏彻底关闭方案不占用rom。下文统称动态修改为软开关宏彻底关闭方案为静态开关。</p>
<ul class="simple">
<li><p>组件log管理 该log优先级最高如下的文件log和私有log均受此开关的束缚</p></li>
<li><p>文件log管理
该log优先级中如下的私有log均受此开关的束缚且文件log受到组件log的管理。</p></li>
<li><p>私有log管理 该log优先级最低受组件log和文件log管理</p></li>
</ul>
</div>
<div class="section" id="log">
<h2><span class="section-number">8.3. </span>log等级说明<a class="headerlink" href="#log" title="永久链接至标题"></a></h2>
<p>按照等级高低分别如下其中all最低即所有log均输出</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>all : 所有log均输出其实等同于all
debug : debug及以上
info : info及以上
warn : warn及以上
error : error及以上
assert : assert及以上
never: 所有log均不输出其实等同于assert
</pre></div>
</div>
</div>
<div class="section" id="id3">
<h2><span class="section-number">8.4. </span>使用方法<a class="headerlink" href="#id3" title="永久链接至标题"></a></h2>
<p>包含必要的头文件
<code class="docutils literal notranslate"><span class="pre">#include</span> <span class="pre">&lt;blog.h&gt;</span></code>然后分别设置组件log、文件log、私有log。</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span> <span class="cpf">&lt;blog.h&gt;</span><span class="cp"></span>
<span class="n">BLOG_DECLARE</span><span class="p">(</span><span class="n">blog_testc2</span><span class="p">);</span>
<span class="kt">void</span> <span class="nf">func</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">blog_debug</span><span class="p">(</span><span class="s">&quot;blog_testc2 debug</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<span class="n">blog_info</span><span class="p">(</span><span class="s">&quot;blog_testc2 info</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<span class="n">blog_warn</span><span class="p">(</span><span class="s">&quot;blog_testc2 warn</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<span class="n">blog_error</span><span class="p">(</span><span class="s">&quot;blog_testc2 error</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<span class="n">blog_assert</span><span class="p">(</span><span class="s">&quot;blog_testc2 assert</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<span class="n">blog_debug_user</span><span class="p">(</span><span class="n">blog_testc2</span><span class="p">,</span><span class="s">&quot;blog_testc2 debug user</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<span class="n">blog_info_user</span><span class="p">(</span><span class="n">blog_testc2</span><span class="p">,</span><span class="s">&quot;blog_testc2 info user</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<span class="n">blog_warn_user</span><span class="p">(</span><span class="n">blog_testc2</span><span class="p">,</span><span class="s">&quot;blog_testc2 warn user</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<span class="n">blog_error_user</span><span class="p">(</span><span class="n">blog_testc2</span><span class="p">,</span><span class="s">&quot;blog_testc2 error user</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<span class="n">blog_assert_user</span><span class="p">(</span><span class="n">blog_testc2</span><span class="p">,</span><span class="s">&quot;blog_testc2 assert user</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</div>
<ul class="simple">
<li><p>组件log开关</p>
<ul>
<li><p>静态开关 在相应的 proj_config.mk
文件目录下LOG_ENABLED_COMPONENTS配置上增加对应组件的名字
例如这里需要增加blog_testa blog_testb
blog_testc组件静态开关其他组件默认关闭
<code class="docutils literal notranslate"><span class="pre">LOG_ENABLED_COMPONENTS:=blog_testa</span> <span class="pre">blog_testb</span> <span class="pre">blog_testc</span></code></p></li>
<li><p>软件开关 通过输入如下命令来使能log输出等级 形如logset level
component_name例如 <code class="docutils literal notranslate"><span class="pre">blogset</span> <span class="pre">assert</span> <span class="pre">blog_testc</span></code></p></li>
</ul>
</li>
<li><p>文件log管理</p>
<ul>
<li><p>静态开关
在对应的*.c文件中加入此行代码注意不管是开或者关必须选择一种。
<code class="docutils literal notranslate"><span class="pre">默认就是开</span></code> <code class="docutils literal notranslate"><span class="pre">#define</span> <span class="pre">BLOG_HARD_DECLARE_DISABLE</span> <span class="pre">1</span>&#160;&#160;&#160; <span class="pre">//</span> <span class="pre"></span></code></p></li>
<li><p>软件开关 通过输入如下命令来使能log输出等级 形如logset level
component_name.file_name例如
<code class="docutils literal notranslate"><span class="pre">blogset</span> <span class="pre">info</span> <span class="pre">blog_testc.blog_testc2_full</span></code></p></li>
</ul>
</li>
<li><p>私有log管理</p>
<ul>
<li><p>静态开关 使用就增加BLOG_DECLARE(...),不用直接不增加此行即可。
<code class="docutils literal notranslate"><span class="pre">BLOG_DECLARE(blog_testc2);</span>&#160;&#160;&#160; <span class="pre">//</span> <span class="pre">打开,其中 &quot;blog_testc2&quot;为用户自定义</span></code></p></li>
<li><p>软件开关 通过输入如下命令来使能log输出等级 形如logset level
component_name.file_name.pri_name例如
<code class="docutils literal notranslate"><span class="pre">blogset</span> <span class="pre">debug</span> <span class="pre">blog_testc.blog_testc2_full.blog_testc2</span></code></p></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="id4">
<h2><span class="section-number">8.5. </span>总结<a class="headerlink" href="#id4" title="永久链接至标题"></a></h2>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../security/security.html" class="btn btn-neutral float-right" title="9. Security" accesskey="n" rel="next">下一页 <span class="fa fa-arrow-circle-right"></span></a>
<a href="../dts/devicetree.html" class="btn btn-neutral float-left" title="7. device tree" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> 上一页</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; 版权所有 2020, Bouffalo Lab
</p>
</div>
利用 <a href="http://sphinx-doc.org/">Sphinx</a> 构建,使用了
<a href="https://github.com/rtfd/sphinx_rtd_theme">主题</a>
<a href="https://readthedocs.org">Read the Docs</a>开发.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>