blob: f64a94a888f59c49b075e574e5435806f83713ef [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Logging &mdash; Apache Mynewt latest documentation</title>
<link rel="shortcut icon" href="../../../_static/mynewt-logo-only-newt32x32.png"/>
<link rel="stylesheet" href="../../../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/sphinx_theme.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/bootstrap-3.0.3.min.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/v2.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/custom.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/restructuredtext.css" type="text/css" />
<link rel="stylesheet" href="../../../_static/css/overrides.css" type="text/css" />
<link rel="index" title="Index"
href="../../../genindex.html"/>
<link rel="search" title="Search" href="../../../search.html"/>
<link rel="top" title="Apache Mynewt latest documentation" href="../../../index.html"/>
<link rel="up" title="OS User Guide" href="../../os_user_guide.html"/>
<link rel="next" title="BLE User Guide" href="../../../network/index.html"/>
<link rel="prev" title="Statistics Module" href="../stats/stats.html"/>
<script src="../../../_static/js/modernizr.min.js"></script>
<script>
(function(i, s, o, g, r, a, m) {
i["GoogleAnalyticsObject"] = r;
(i[r] =
i[r] ||
function() {
(i[r].q = i[r].q || []).push(arguments);
}),
(i[r].l = 1 * new Date());
(a = s.createElement(o)), (m = s.getElementsByTagName(o)[0]);
a.async = 1;
a.src = g;
m.parentNode.insertBefore(a, m);
})(window, document, "script", "//www.google-analytics.com/analytics.js", "ga");
ga("create", "UA-72162311-1", "auto");
ga("send", "pageview");
</script>
</head>
<body class="not-front page-documentation" role="document" >
<div id="wrapper">
<div class="container">
<div id="banner" class="row v2-main-banner">
<a class="logo-cell" href="/">
<img class="logo" src="../../../_static/img/logo.png">
</a>
<div class="tagline-cell">
<h4 class="tagline">An OS to build, deploy and securely manage billions of devices</h4>
</div>
<div class="news-cell">
<div class="well">
<h4>Latest News:</h4> <a href="/download">Apache Mynewt 1.12.0, Apache NimBLE 1.7.0 </a> released April 4, 2024)
</div>
</div>
</div>
</div>
<header>
<nav id="navbar" class="navbar navbar-inverse" role="navigation">
<div class="container">
<!-- Collapsed navigation -->
<div class="navbar-header">
<!-- Expander button -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<!-- Expanded navigation -->
<div class="navbar-collapse collapse">
<!-- Main navigation -->
<ul class="nav navbar-nav navbar-right">
<li>
<a href="/"><i class="fa fa-home" style="font-size: larger;"></i></a>
</li>
<li class="important">
<a href="/quick-start/">Quick Start</a>
</li>
<li>
<a href="/about/">About</a>
</li>
<li>
<a href="/talks/">Talks</a>
</li>
<li class="active">
<a href="/documentation/">Documentation</a>
</li>
<li>
<a href="/download/">Download</a>
</li>
<li>
<a href="/community/">Community</a>
</li>
<li>
<a href="/events/">Events</a>
</li>
</ul>
<!-- Search, Navigation and Repo links -->
<ul class="nav navbar-nav navbar-right">
</ul>
</div>
</div>
</nav>
</header>
<!-- STARTS MAIN CONTENT -->
<div id="main-content">
<div id="breadcrumb">
<div class="container">
<a href="/documentation/">Docs</a> /
<a href="../../os_user_guide.html">OS User Guide</a> /
Logging
<div class="sourcelink">
<a href="https://github.com/apache/mynewt-core/edit/master/docs/os/modules/logs/logs.rst" class="icon icon-github"
rel="nofollow"> Edit on GitHub</a>
</div>
</div>
</div>
<!-- STARTS CONTAINER -->
<div class="container">
<!-- STARTS .content -->
<div id="content" class="row">
<!-- STARTS .container-sidebar -->
<div class="container-sidebar col-xs-12 col-sm-3">
<div id="docSidebar" class="sticky-container">
<div role="search" class="sphinx-search">
<form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get">
<input type="text" name="q" placeholder="Search documentation" class="search-documentation" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<!-- Note: only works when deployed -->
<select class="form-control" onchange="if (this.value) window.location.href=this.value">
<option value="/latest" selected>
Version: latest
</option>
<option value="/v1_12_0" >
Version: 1.12.0
</option>
<option value="/v1_11_0" >
Version: 1.11.0
</option>
<option value="/v1_10_0" >
Version: 1.10.0
</option>
<option value="/v1_9_0" >
Version: 1.9.0
</option>
<option value="/v1_8_0" >
Version: 1.8.0
</option>
<option value="/v1_7_0" >
Version: 1.7.0
</option>
<option value="/v1_6_0" >
Version: 1.6.0
</option>
<option value="/v1_5_0" >
Version: 1.5.0
</option>
<option value="/v1_4_0" selected="selected" >
Version: 1.4.0
</option>
<option value="/v1_3_0/os/introduction" >
Version: 1.3.0
</option>
<option value="/v1_2_0/os/introduction" >
Version: 1.2.0
</option>
<option value="/v1_1_0/os/introduction" >
Version: 1.1.0
</option>
<option value="/v1_0_0/os/introduction" >
Version: 1.0.0
</option>
<option value="/v0_9_0/os/introduction" >
Version: 0.9.0
</option>
</select>
<div class="region region-sidebar">
<div class="docs-menu">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../../../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../get_started/index.html">Setup &amp; Get Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../concepts.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../tutorials/tutorials.html">Tutorials</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../external_links.html">Third-party Resources</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="../../os_user_guide.html">OS User Guide</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="../../core_os/mynewt_os.html">Kernel</a></li>
<li class="toctree-l2"><a class="reference internal" href="../system_modules.html">System</a></li>
<li class="toctree-l2"><a class="reference internal" href="../hal/hal.html">Hardware Abstraction</a></li>
<li class="toctree-l2"><a class="reference internal" href="../bootloader/bootloader.html">Secure Bootloader</a></li>
<li class="toctree-l2"><a class="reference internal" href="../split/split.html">Split Images</a></li>
<li class="toctree-l2"><a class="reference internal" href="../../core_os/porting/port_os.html">Porting Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="../sysinitconfig/sysinitconfig.html">Compile-Time Configuration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../console/console.html">Console</a></li>
<li class="toctree-l2"><a class="reference internal" href="../shell/shell.html">Shell</a></li>
<li class="toctree-l2"><a class="reference internal" href="../testutil/testutil.html">Test Utilities</a></li>
<li class="toctree-l2"><a class="reference internal" href="../json/json.html">JSON</a></li>
<li class="toctree-l2"><a class="reference internal" href="../stats/stats.html">Statistics</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Logs</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../../../network/index.html">BLE User Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../newt/index.html">Newt Tool Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../newtmgr/index.html">Newt Manager Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../mynewt_faq/index.html">Mynewt FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../../../misc/index.html">Appendix</a></li>
</ul>
</div>
</div>
</div>
<!-- ENDS STICKY CONTAINER -->
</div>
<!-- ENDS .container-sidebar -->
<div class="col-xs-12 col-sm-9">
<div class="alert alert-warning">
<p>
Version 1.4.0 is not the most recent version of the
Apache Mynewt documentation. Click <a href="/latest">here</a> to
read the latest version.
</p>
</div>
<div class="">
<div class="rst-content">
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="logging">
<h1>Logging<a class="headerlink" href="#logging" title="Permalink to this headline"></a></h1>
<p>Mynewt log package supports logging of information within a Mynewt
application. It allows packages to define their own log streams with
separate names. It also allows an application to control the output
destination of logs.</p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><p><a class="reference internal" href="#syscfg-settings" id="id1">Syscfg Settings</a></p>
<ul>
<li><p><a class="reference internal" href="#log" id="id2">Log</a></p></li>
<li><p><a class="reference internal" href="#log-handler" id="id3">Log Handler</a></p></li>
<li><p><a class="reference internal" href="#configuring-logging-for-packages-that-an-application-uses" id="id4">Configuring Logging for Packages that an Application Uses</a></p></li>
<li><p><a class="reference internal" href="#implementing-a-package-that-uses-logging" id="id5">Implementing a Package that Uses Logging</a></p></li>
<li><p><a class="reference internal" href="#log-api-and-log-levels" id="id6">Log API and Log Levels</a></p></li>
</ul>
</li>
</ul>
</div>
<p>### Description</p>
<p>In the Mynewt OS, the log package comes in two versions:</p>
<ul class="simple">
<li><p>The <code class="docutils literal notranslate"><span class="pre">sys/log/full</span></code> package implements the complete log
functionality and API.</p></li>
<li><p>The <code class="docutils literal notranslate"><span class="pre">sys/log/stub</span></code> package implements stubs for the API.</p></li>
</ul>
<p>Both packages export the <code class="docutils literal notranslate"><span class="pre">log</span></code> API, and any package that uses the log
API must list <code class="docutils literal notranslate"><span class="pre">log</span></code> as a requirement in its <code class="docutils literal notranslate"><span class="pre">pkg.yml</span></code> file as
follows:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">pkg.req_apis:</span>
<span class="go"> - log</span>
</pre></div>
</div>
<p>The application’s <code class="docutils literal notranslate"><span class="pre">pkg.yml</span></code> file specifies the version of the log
package to use. A project that requires the full logging capability must
list the <code class="docutils literal notranslate"><span class="pre">sys/log/full</span></code> package as a dependency in its <code class="docutils literal notranslate"><span class="pre">pkg.yml</span></code>
file:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">pkg.deps:</span>
<span class="go"> - sys/log/full</span>
</pre></div>
</div>
<p>You can use the <code class="docutils literal notranslate"><span class="pre">sys/log/stub</span></code> package if you want to build your
application without logging to reduce code size.</p>
<div class="section" id="syscfg-settings">
<h2><a class="toc-backref" href="#id1">Syscfg Settings</a><a class="headerlink" href="#syscfg-settings" title="Permalink to this headline"></a></h2>
<p>The <code class="docutils literal notranslate"><span class="pre">LOG_LEVEL</span></code> syscfg setting allows you to specify the level of logs
to enable in your application. Only logs for levels higher or equal to
the value of <code class="docutils literal notranslate"><span class="pre">LOG_LEVEL</span></code> are enabled. The amount of logs you include
affects your application code size. <code class="docutils literal notranslate"><span class="pre">LOG_LEVEL:</span> <span class="pre">0</span></code> specifies
LOG_LEVEL_DEBUG and includes all logs. You set <code class="docutils literal notranslate"><span class="pre">LOG_LEVEL:</span> <span class="pre">255</span></code> to
disable all logging. The <code class="docutils literal notranslate"><span class="pre">#defines</span></code> for the log levels are specified
in the <code class="docutils literal notranslate"><span class="pre">sys/log/full/include/log/log.h</span></code> file. For example the
following setting corresponds to LOG_LEVEL_ERROR:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">syscfg.vals:</span>
<span class="go"> LOG_LEVEL: 3</span>
</pre></div>
</div>
<p>The <code class="docutils literal notranslate"><span class="pre">LOG_LEVEL</span></code> setting applies to all modules registered with the log
package.</p>
<div class="section" id="log">
<h3><a class="toc-backref" href="#id2">Log</a><a class="headerlink" href="#log" title="Permalink to this headline"></a></h3>
<p>Each log stream requires a <code class="docutils literal notranslate"><span class="pre">log</span></code> structure to define its logging
properties.</p>
</div>
<div class="section" id="log-handler">
<h3><a class="toc-backref" href="#id3">Log Handler</a><a class="headerlink" href="#log-handler" title="Permalink to this headline"></a></h3>
<p>To use logs, a log handler that handles the I/O from the log is
required. The log package comes with three pre-built log handlers:</p>
<ul class="simple">
<li><p>console – streams log events directly to the console port. Does not
support walking and reading.</p></li>
<li><p>cbmem – writes/reads log events to a circular buffer. Supports
walking and reading for access by newtmgr and shell commands.</p></li>
<li><p>fcb – writes/reads log events to a <a class="reference external" href="/os/modules/fcb/fcb.html">flash circular
buffer</a>. Supports walking and reading for
access by newtmgr and shell commands.</p></li>
</ul>
<p>In addition, it is possible to create custom log handlers for other
methods. Examples may include</p>
<ul class="simple">
<li><p>Flash file system</p></li>
<li><p>Flat flash buffer</p></li>
<li><p>Streamed over some other interface</p></li>
</ul>
<p>To use logging, you typically do not need to create your own log
handler. You can use one of the pre-built ones.</p>
<p>A package or an application must define a variable of type
<code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">log</span></code> and register a log handler for it with the log package.
It must call the <code class="docutils literal notranslate"><span class="pre">log_register()</span></code> function to specify the log handler
to use:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="n">log_register</span><span class="p">(</span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">name</span><span class="p">,</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">log</span><span class="w"> </span><span class="o">*</span><span class="n">log</span><span class="p">,</span><span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">log_handler</span><span class="w"> </span><span class="o">*</span><span class="n">lh</span><span class="p">,</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="o">*</span><span class="n">arg</span><span class="p">,</span><span class="w"> </span><span class="kt">uint8_t</span><span class="w"> </span><span class="n">level</span><span class="p">)</span>
</pre></div>
</div>
<p>The parameters are:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">name</span></code>- Name of the log stream.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">log</span></code> - Log instance to register,</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">lh</span></code> - Pointer to the log handler. You can specify one of the
pre-built ones:</p>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">&amp;log_console_handler</span></code> for console</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">&amp;log_cbm_handler</span></code> for circular buffer</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">&amp;log_fcb_handler</span></code> for flash circular buffer</p></li>
</ul>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">arg</span></code> - Opaque argument that the specified log handler uses. The
value of this argument depends on the log handler you specify:</p>
<ul>
<li><p>NULL for the <code class="docutils literal notranslate"><span class="pre">log_console_handler</span></code>.</p></li>
<li><p>Pointer to an initialized <code class="docutils literal notranslate"><span class="pre">cbmem</span></code> structure (see <code class="docutils literal notranslate"><span class="pre">util/cbmem</span></code>
package) for the <code class="docutils literal notranslate"><span class="pre">log_cbm_handler</span></code>.</p></li>
<li><p>Pointer to an initialized <code class="docutils literal notranslate"><span class="pre">fcb_log</span></code> structure (see <code class="docutils literal notranslate"><span class="pre">fs/fcb</span></code>
package) for the <code class="docutils literal notranslate"><span class="pre">log_fcb_handler</span></code>.</p></li>
</ul>
</li>
</ul>
<p>Typically, a package that uses logging defines a global variable, such
as <code class="docutils literal notranslate"><span class="pre">my_package_log</span></code>, of type <code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">log</span></code>. The package can call the
<code class="docutils literal notranslate"><span class="pre">log_register()</span></code> function with default values, but usually an
application will override the logging properties and where to log to.
There are two ways a package can allow an application to override the
values:</p>
<ul class="simple">
<li><p>Define system configuration settings that an application can set and
the package can then call the <code class="docutils literal notranslate"><span class="pre">log_register()</span></code> function with the
configuration values.</p></li>
<li><p>Make the <code class="docutils literal notranslate"><span class="pre">my_package_log</span></code> variable external and let the application
call the <code class="docutils literal notranslate"><span class="pre">log_register()</span></code> function to specify a log handler for its
specific purpose.</p></li>
</ul>
</div>
<div class="section" id="configuring-logging-for-packages-that-an-application-uses">
<h3><a class="toc-backref" href="#id4">Configuring Logging for Packages that an Application Uses</a><a class="headerlink" href="#configuring-logging-for-packages-that-an-application-uses" title="Permalink to this headline"></a></h3>
<p>Here is an example of how an application can set the log handlers for
the logs of the packages that the application includes.</p>
<p>In this example, the <code class="docutils literal notranslate"><span class="pre">package1</span></code> package defines the variable
<code class="docutils literal notranslate"><span class="pre">package1_log</span></code> of type <code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">log</span></code> and externs the variable.
Similarly, the <code class="docutils literal notranslate"><span class="pre">package2</span></code> package defines the variable
<code class="docutils literal notranslate"><span class="pre">package2_log</span></code> and externs the variable. The application sets logs for
<code class="docutils literal notranslate"><span class="pre">package1</span></code> to use console and sets logs for <code class="docutils literal notranslate"><span class="pre">package2</span></code> to use a
circular buffer.</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;package1/package1.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;package2/package2.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;util/cbmem.h&gt;</span>
<span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;log/log.h&gt;</span>
<span class="k">static</span><span class="w"> </span><span class="kt">uint32_t</span><span class="w"> </span><span class="n">cbmem_buf</span><span class="p">[</span><span class="n">MAX_CBMEM_BUF</span><span class="p">];</span>
<span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">cbmem</span><span class="w"> </span><span class="n">cbmem</span><span class="p">;</span>
<span class="kt">void</span><span class="w"> </span><span class="nf">app_log_init</span><span class="p">(</span><span class="kt">void</span><span class="p">)</span>
<span class="p">{</span>
<span class="w"> </span><span class="n">log_register</span><span class="p">(</span><span class="s">&quot;package1_log&quot;</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">package1_log</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">log_console_handler</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">LOG_SYSLEVEL</span><span class="p">);</span>
<span class="w"> </span><span class="n">cbmem_init</span><span class="p">(</span><span class="o">&amp;</span><span class="n">cbmem</span><span class="p">,</span><span class="w"> </span><span class="n">cbmem_buf</span><span class="p">,</span><span class="w"> </span><span class="n">MAX_CBMEM_BUF</span><span class="p">);</span>
<span class="w"> </span><span class="n">log_register</span><span class="p">(</span><span class="s">&quot;package2_log&quot;</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">package2_log</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">log_cbmem_handler</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">cbmem</span><span class="p">,</span><span class="w"> </span><span class="n">LOG_SYSLEVEL</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="implementing-a-package-that-uses-logging">
<h3><a class="toc-backref" href="#id5">Implementing a Package that Uses Logging</a><a class="headerlink" href="#implementing-a-package-that-uses-logging" title="Permalink to this headline"></a></h3>
<p>This example shows how a package logs to console. The package registers
default logging properties to use the console, but allows an application
to override the values. It defines the <code class="docutils literal notranslate"><span class="pre">my_package_log</span></code> variable and
makes it external so an application can override log handler.</p>
<p>Make the <code class="docutils literal notranslate"><span class="pre">my_package_log</span></code> variable external:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cm">/* my_package.h*/</span>
<span class="cm">/* pick a unique name here */</span>
<span class="k">extern</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">log</span><span class="w"> </span><span class="n">my_package_log</span><span class="p">;</span>
</pre></div>
</div>
<p>Define the <code class="docutils literal notranslate"><span class="pre">my_package_log</span></code> variable and register the console log
handler:</p>
<div class="highlight-c notranslate"><div class="highlight"><pre><span></span><span class="cm">/* my_package.c */</span>
<span class="k">struct</span><span class="w"> </span><span class="nc">log</span><span class="w"> </span><span class="n">my_package_log</span><span class="p">;</span>
<span class="p">{</span>
<span class="w"> </span><span class="p">...</span>
<span class="w"> </span><span class="cm">/* register my log with a name to the system */</span>
<span class="w"> </span><span class="n">log_register</span><span class="p">(</span><span class="s">&quot;log&quot;</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">my_package_log</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="n">log_console_handler</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="n">LOG_LEVEL_DEBUG</span><span class="p">);</span>
<span class="w"> </span><span class="n">LOG_DEBUG</span><span class="p">(</span><span class="o">&amp;</span><span class="n">my_package_log</span><span class="p">,</span><span class="w"> </span><span class="n">LOG_MODULE_DEFAULT</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;bla&quot;</span><span class="p">);</span>
<span class="w"> </span><span class="n">LOG_DEBUG</span><span class="p">(</span><span class="o">&amp;</span><span class="n">my_package_log</span><span class="p">,</span><span class="w"> </span><span class="n">LOG_MODULE_DEFAULT</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;bab&quot;</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="log-api-and-log-levels">
<h3><a class="toc-backref" href="#id6">Log API and Log Levels</a><a class="headerlink" href="#log-api-and-log-levels" title="Permalink to this headline"></a></h3>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-defines">Defines</p>
<dl class="c macro">
<dt id="c.LOG_VERSION_V3">
<span class="target" id="full_2include_2log_2log_8h_1a8f8ebd232ebfdf36ba7da9c5b6691929"></span><code class="sig-name descname"><span class="pre">LOG_VERSION_V3</span></code><a class="headerlink" href="#c.LOG_VERSION_V3" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_VERSION_V2">
<span class="target" id="full_2include_2log_2log_8h_1aad6d6d34f089e4a0b9004a18083d1753"></span><code class="sig-name descname"><span class="pre">LOG_VERSION_V2</span></code><a class="headerlink" href="#c.LOG_VERSION_V2" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_VERSION_V1">
<span class="target" id="full_2include_2log_2log_8h_1a8f833df98f04f2e0c739309939ec58da"></span><code class="sig-name descname"><span class="pre">LOG_VERSION_V1</span></code><a class="headerlink" href="#c.LOG_VERSION_V1" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_TYPE_STREAM">
<span class="target" id="full_2include_2log_2log_8h_1a610563bb3f6a690948711c0300b758bf"></span><code class="sig-name descname"><span class="pre">LOG_TYPE_STREAM</span></code><a class="headerlink" href="#c.LOG_TYPE_STREAM" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_TYPE_MEMORY">
<span class="target" id="full_2include_2log_2log_8h_1a9938fba7afed18c9f246cba1755daa77"></span><code class="sig-name descname"><span class="pre">LOG_TYPE_MEMORY</span></code><a class="headerlink" href="#c.LOG_TYPE_MEMORY" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_TYPE_STORAGE">
<span class="target" id="full_2include_2log_2log_8h_1a4e0bc8d935d770577b20fa41ba7d65e8"></span><code class="sig-name descname"><span class="pre">LOG_TYPE_STORAGE</span></code><a class="headerlink" href="#c.LOG_TYPE_STORAGE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_ENTRY_HDR_SIZE">
<span class="target" id="full_2include_2log_2log_8h_1aa351bb8575008aaa9457819cbde1cea1"></span><code class="sig-name descname"><span class="pre">LOG_ENTRY_HDR_SIZE</span></code><a class="headerlink" href="#c.LOG_ENTRY_HDR_SIZE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_LEVEL_DEBUG">
<span class="target" id="full_2include_2log_2log_8h_1a130224df8c6bf22a688e3cb74a45689a"></span><code class="sig-name descname"><span class="pre">LOG_LEVEL_DEBUG</span></code><a class="headerlink" href="#c.LOG_LEVEL_DEBUG" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_LEVEL_INFO">
<span class="target" id="full_2include_2log_2log_8h_1a2e25fe130cf710da4ad800747fdd51f3"></span><code class="sig-name descname"><span class="pre">LOG_LEVEL_INFO</span></code><a class="headerlink" href="#c.LOG_LEVEL_INFO" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_LEVEL_WARN">
<span class="target" id="full_2include_2log_2log_8h_1a14f43a1fab62b98fc88603cdb988de3d"></span><code class="sig-name descname"><span class="pre">LOG_LEVEL_WARN</span></code><a class="headerlink" href="#c.LOG_LEVEL_WARN" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_LEVEL_ERROR">
<span class="target" id="full_2include_2log_2log_8h_1a742fc70e331d7e568bd893c514756a29"></span><code class="sig-name descname"><span class="pre">LOG_LEVEL_ERROR</span></code><a class="headerlink" href="#c.LOG_LEVEL_ERROR" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_LEVEL_CRITICAL">
<span class="target" id="full_2include_2log_2log_8h_1af6fcf65d545308183defd25bffce73e3"></span><code class="sig-name descname"><span class="pre">LOG_LEVEL_CRITICAL</span></code><a class="headerlink" href="#c.LOG_LEVEL_CRITICAL" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_LEVEL_MAX">
<span class="target" id="full_2include_2log_2log_8h_1ab182a20ea4584e81f84c4a04467e4cfa"></span><code class="sig-name descname"><span class="pre">LOG_LEVEL_MAX</span></code><a class="headerlink" href="#c.LOG_LEVEL_MAX" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_LEVEL_STR">
<span class="target" id="full_2include_2log_2log_8h_1a4badbac64bbf12778ae3658b845c6a22"></span><code class="sig-name descname"><span class="pre">LOG_LEVEL_STR</span></code><span class="sig-paren">(</span><em><span class="pre">level</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.LOG_LEVEL_STR" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_MODULE_DEFAULT">
<span class="target" id="full_2include_2log_2log_8h_1afcc593f20949de18ee3cf3e15b8d73c3"></span><code class="sig-name descname"><span class="pre">LOG_MODULE_DEFAULT</span></code><a class="headerlink" href="#c.LOG_MODULE_DEFAULT" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_MODULE_OS">
<span class="target" id="full_2include_2log_2log_8h_1afc3a48733fc06ae95b53c935ca672f4d"></span><code class="sig-name descname"><span class="pre">LOG_MODULE_OS</span></code><a class="headerlink" href="#c.LOG_MODULE_OS" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_MODULE_NEWTMGR">
<span class="target" id="full_2include_2log_2log_8h_1ab5bb645ef959e2d20cc05e28a5492742"></span><code class="sig-name descname"><span class="pre">LOG_MODULE_NEWTMGR</span></code><a class="headerlink" href="#c.LOG_MODULE_NEWTMGR" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_MODULE_NIMBLE_CTLR">
<span class="target" id="full_2include_2log_2log_8h_1acd177fe2da3bd6f211bba6f23e8e18bd"></span><code class="sig-name descname"><span class="pre">LOG_MODULE_NIMBLE_CTLR</span></code><a class="headerlink" href="#c.LOG_MODULE_NIMBLE_CTLR" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_MODULE_NIMBLE_HOST">
<span class="target" id="full_2include_2log_2log_8h_1a84536d59ade383ed2799242c487dbaf0"></span><code class="sig-name descname"><span class="pre">LOG_MODULE_NIMBLE_HOST</span></code><a class="headerlink" href="#c.LOG_MODULE_NIMBLE_HOST" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_MODULE_NFFS">
<span class="target" id="full_2include_2log_2log_8h_1a2c5d28dba57814e699bd835b4c6723b7"></span><code class="sig-name descname"><span class="pre">LOG_MODULE_NFFS</span></code><a class="headerlink" href="#c.LOG_MODULE_NFFS" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_MODULE_REBOOT">
<span class="target" id="full_2include_2log_2log_8h_1aec990f3bd497c2c0a0c9fbb42ed64a47"></span><code class="sig-name descname"><span class="pre">LOG_MODULE_REBOOT</span></code><a class="headerlink" href="#c.LOG_MODULE_REBOOT" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_MODULE_IOTIVITY">
<span class="target" id="full_2include_2log_2log_8h_1ac68f5648979cf7f9cc91ff5802676f29"></span><code class="sig-name descname"><span class="pre">LOG_MODULE_IOTIVITY</span></code><a class="headerlink" href="#c.LOG_MODULE_IOTIVITY" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_MODULE_TEST">
<span class="target" id="full_2include_2log_2log_8h_1a8bbdc9fb6142c49d266fe0699ec46b3c"></span><code class="sig-name descname"><span class="pre">LOG_MODULE_TEST</span></code><a class="headerlink" href="#c.LOG_MODULE_TEST" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_MODULE_PERUSER">
<span class="target" id="full_2include_2log_2log_8h_1a8f8acd99efa6d4111cd1694981f7af76"></span><code class="sig-name descname"><span class="pre">LOG_MODULE_PERUSER</span></code><a class="headerlink" href="#c.LOG_MODULE_PERUSER" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_MODULE_MAX">
<span class="target" id="full_2include_2log_2log_8h_1a7b7c83be87eed5d45ae00b7a2c018dd4"></span><code class="sig-name descname"><span class="pre">LOG_MODULE_MAX</span></code><a class="headerlink" href="#c.LOG_MODULE_MAX" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_MODULE_STR">
<span class="target" id="full_2include_2log_2log_8h_1aea345a9b707b66dec9fe387d1691941b"></span><code class="sig-name descname"><span class="pre">LOG_MODULE_STR</span></code><span class="sig-paren">(</span><em><span class="pre">module</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.LOG_MODULE_STR" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_ETYPE_STRING">
<span class="target" id="full_2include_2log_2log_8h_1affb3bfb2beea27f1970a8c1b44456d15"></span><code class="sig-name descname"><span class="pre">LOG_ETYPE_STRING</span></code><a class="headerlink" href="#c.LOG_ETYPE_STRING" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_STORE_CONSOLE">
<span class="target" id="full_2include_2log_2log_8h_1a82772ffedd29b7cce142d4c978ecbd5f"></span><code class="sig-name descname"><span class="pre">LOG_STORE_CONSOLE</span></code><a class="headerlink" href="#c.LOG_STORE_CONSOLE" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_STORE_CBMEM">
<span class="target" id="full_2include_2log_2log_8h_1a3e17cfbe36720bdad5fcff8f80382325"></span><code class="sig-name descname"><span class="pre">LOG_STORE_CBMEM</span></code><a class="headerlink" href="#c.LOG_STORE_CBMEM" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_STORE_FCB">
<span class="target" id="full_2include_2log_2log_8h_1a21703828bda2b011970b2b50e654cf4e"></span><code class="sig-name descname"><span class="pre">LOG_STORE_FCB</span></code><a class="headerlink" href="#c.LOG_STORE_FCB" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.UTC01_01_2016">
<span class="target" id="full_2include_2log_2log_8h_1afb3920808552eaf1f7cad9fae67dd745"></span><code class="sig-name descname"><span class="pre">UTC01_01_2016</span></code><a class="headerlink" href="#c.UTC01_01_2016" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_NAME_MAX_LEN">
<span class="target" id="full_2include_2log_2log_8h_1ae6c3f940d1b2398739150496625b6233"></span><code class="sig-name descname"><span class="pre">LOG_NAME_MAX_LEN</span></code><a class="headerlink" href="#c.LOG_NAME_MAX_LEN" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_DEBUG">
<span class="target" id="full_2include_2log_2log_8h_1ad9197501ccd575fd396cd9f0c54e9910"></span><code class="sig-name descname"><span class="pre">LOG_DEBUG</span></code><span class="sig-paren">(</span><em><span class="pre">__l</span></em>, <em><span class="pre">__mod</span></em>, <span class="pre">...</span><span class="sig-paren">)</span><a class="headerlink" href="#c.LOG_DEBUG" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_INFO">
<span class="target" id="full_2include_2log_2log_8h_1a85e37bd6bbc7b160f9db4fd74b8b94cc"></span><code class="sig-name descname"><span class="pre">LOG_INFO</span></code><span class="sig-paren">(</span><em><span class="pre">__l</span></em>, <em><span class="pre">__mod</span></em>, <em><span class="pre">__msg</span></em>, <span class="pre">...</span><span class="sig-paren">)</span><a class="headerlink" href="#c.LOG_INFO" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_WARN">
<span class="target" id="full_2include_2log_2log_8h_1a43bc7c614bb8622e419ee464dcc65cd3"></span><code class="sig-name descname"><span class="pre">LOG_WARN</span></code><span class="sig-paren">(</span><em><span class="pre">__l</span></em>, <em><span class="pre">__mod</span></em>, <em><span class="pre">__msg</span></em>, <span class="pre">...</span><span class="sig-paren">)</span><a class="headerlink" href="#c.LOG_WARN" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_ERROR">
<span class="target" id="full_2include_2log_2log_8h_1ae337790f2ad92df48e52dd5890425c00"></span><code class="sig-name descname"><span class="pre">LOG_ERROR</span></code><span class="sig-paren">(</span><em><span class="pre">__l</span></em>, <em><span class="pre">__mod</span></em>, <em><span class="pre">__msg</span></em>, <span class="pre">...</span><span class="sig-paren">)</span><a class="headerlink" href="#c.LOG_ERROR" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_CRITICAL">
<span class="target" id="full_2include_2log_2log_8h_1a88da2c2eb4834a29f31ea4d091637a4b"></span><code class="sig-name descname"><span class="pre">LOG_CRITICAL</span></code><span class="sig-paren">(</span><em><span class="pre">__l</span></em>, <em><span class="pre">__mod</span></em>, <em><span class="pre">__msg</span></em>, <span class="pre">...</span><span class="sig-paren">)</span><a class="headerlink" href="#c.LOG_CRITICAL" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_SYSLEVEL">
<span class="target" id="full_2include_2log_2log_8h_1a7524a7cda5647ca238aa96b6c3dcdaae"></span><code class="sig-name descname"><span class="pre">LOG_SYSLEVEL</span></code><a class="headerlink" href="#c.LOG_SYSLEVEL" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOGS_NMGR_OP_READ">
<span class="target" id="full_2include_2log_2log_8h_1a3e1c5b14afb7273f5bc2220c04429c83"></span><code class="sig-name descname"><span class="pre">LOGS_NMGR_OP_READ</span></code><a class="headerlink" href="#c.LOGS_NMGR_OP_READ" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOGS_NMGR_OP_CLEAR">
<span class="target" id="full_2include_2log_2log_8h_1a4e02db03ceae1638b3c3d45abf4947fe"></span><code class="sig-name descname"><span class="pre">LOGS_NMGR_OP_CLEAR</span></code><a class="headerlink" href="#c.LOGS_NMGR_OP_CLEAR" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOGS_NMGR_OP_APPEND">
<span class="target" id="full_2include_2log_2log_8h_1a0859c74d268d74bd9ee5a1b60332e8bd"></span><code class="sig-name descname"><span class="pre">LOGS_NMGR_OP_APPEND</span></code><a class="headerlink" href="#c.LOGS_NMGR_OP_APPEND" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOGS_NMGR_OP_MODULE_LIST">
<span class="target" id="full_2include_2log_2log_8h_1a6f2f5ff44d2061b36688e485db1d6712"></span><code class="sig-name descname"><span class="pre">LOGS_NMGR_OP_MODULE_LIST</span></code><a class="headerlink" href="#c.LOGS_NMGR_OP_MODULE_LIST" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOGS_NMGR_OP_LEVEL_LIST">
<span class="target" id="full_2include_2log_2log_8h_1af7dd8ff96bfe7000ee775c0f7be8857f"></span><code class="sig-name descname"><span class="pre">LOGS_NMGR_OP_LEVEL_LIST</span></code><a class="headerlink" href="#c.LOGS_NMGR_OP_LEVEL_LIST" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOGS_NMGR_OP_LOGS_LIST">
<span class="target" id="full_2include_2log_2log_8h_1acbf29a668618b91fb503fdce4eca4701"></span><code class="sig-name descname"><span class="pre">LOGS_NMGR_OP_LOGS_LIST</span></code><a class="headerlink" href="#c.LOGS_NMGR_OP_LOGS_LIST" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c macro">
<dt id="c.LOG_PRINTF_MAX_ENTRY_LEN">
<span class="target" id="full_2include_2log_2log_8h_1a4b313dbbbadbfbb6a3ffa3db4ae99b31"></span><code class="sig-name descname"><span class="pre">LOG_PRINTF_MAX_ENTRY_LEN</span></code><a class="headerlink" href="#c.LOG_PRINTF_MAX_ENTRY_LEN" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-typedefs">Typedefs</p>
<dl class="c type">
<dt id="c.log_walk_func_t">
<span class="target" id="full_2include_2log_2log_8h_1a5bccb60687b65c54978eae492c7515a3"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">log_walk_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log" title="log"><span class="pre">log</span></a><span class="pre">*</span>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_offset" title="log_offset"><span class="pre">log_offset</span></a> <span class="pre">*</span><span class="pre">log_offset</span>, <span class="pre">void</span> <span class="pre">*</span><span class="pre">offset</span>, <span class="pre">uint16_t</span> <span class="pre">len</span><span class="sig-paren">)</span><a class="headerlink" href="#c.log_walk_func_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt id="c.lh_read_func_t">
<span class="target" id="full_2include_2log_2log_8h_1a2f127d1e7301e582997bf9b90c807d12"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">lh_read_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log" title="log"><span class="pre">log</span></a><span class="pre">*</span>, <span class="pre">void</span> <span class="pre">*</span><span class="pre">dptr</span>, <span class="pre">void</span> <span class="pre">*</span><span class="pre">buf</span>, <span class="pre">uint16_t</span> <span class="pre">offset</span>, <span class="pre">uint16_t</span> <span class="pre">len</span><span class="sig-paren">)</span><a class="headerlink" href="#c.lh_read_func_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt id="c.lh_read_mbuf_func_t">
<span class="target" id="full_2include_2log_2log_8h_1aa66ddf4192295db784c806d09e5554a9"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">lh_read_mbuf_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log" title="log"><span class="pre">log</span></a><span class="pre">*</span>, <span class="pre">void</span> <span class="pre">*</span><span class="pre">dptr</span>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="../../core_os/mbuf/mbuf.html#c.os_mbuf" title="os_mbuf"><span class="pre">os_mbuf</span></a> <span class="pre">*</span><span class="pre">om</span>, <span class="pre">uint16_t</span> <span class="pre">offset</span>, <span class="pre">uint16_t</span> <span class="pre">len</span><span class="sig-paren">)</span><a class="headerlink" href="#c.lh_read_mbuf_func_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt id="c.lh_append_func_t">
<span class="target" id="full_2include_2log_2log_8h_1a19ee35f77c0d909b360a7704b672f9d1"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">lh_append_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log" title="log"><span class="pre">log</span></a><span class="pre">*</span>, <span class="pre">void</span> <span class="pre">*</span><span class="pre">buf</span>, <span class="pre">int</span> <span class="pre">len</span><span class="sig-paren">)</span><a class="headerlink" href="#c.lh_append_func_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt id="c.lh_append_mbuf_func_t">
<span class="target" id="full_2include_2log_2log_8h_1a8f68677678144da0641491a8179c7460"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">lh_append_mbuf_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log" title="log"><span class="pre">log</span></a><span class="pre">*</span>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="../../core_os/mbuf/mbuf.html#c.os_mbuf" title="os_mbuf"><span class="pre">os_mbuf</span></a> <span class="pre">*</span><span class="pre">om</span><span class="sig-paren">)</span><a class="headerlink" href="#c.lh_append_mbuf_func_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt id="c.lh_walk_func_t">
<span class="target" id="full_2include_2log_2log_8h_1a26ea94f956c083f449619bcaea428eaa"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">lh_walk_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log" title="log"><span class="pre">log</span></a><span class="pre">*</span>, <a class="reference internal" href="#c.log_walk_func_t" title="log_walk_func_t"><span class="pre">log_walk_func_t</span></a> <span class="pre">walk_func</span>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_offset" title="log_offset"><span class="pre">log_offset</span></a> <span class="pre">*</span><span class="pre">log_offset</span><span class="sig-paren">)</span><a class="headerlink" href="#c.lh_walk_func_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt id="c.lh_flush_func_t">
<span class="target" id="full_2include_2log_2log_8h_1aa56cbe1332f7ea07753f928f094310e6"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">lh_flush_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log" title="log"><span class="pre">log</span></a><span class="pre">*</span><span class="sig-paren">)</span><a class="headerlink" href="#c.lh_flush_func_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c type">
<dt id="c.lh_registered_func_t">
<span class="target" id="full_2include_2log_2log_8h_1a0849c4cff323e8747e981672b0ae7142"></span><em class="property"><span class="pre">typedef</span> </em><span class="pre">int</span> <span class="pre">(</span><span class="pre">*</span><code class="sig-name descname"><span class="pre">lh_registered_func_t</span></code><span class="pre">)</span><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log" title="log"><span class="pre">log</span></a><span class="pre">*</span><span class="sig-paren">)</span><a class="headerlink" href="#c.lh_registered_func_t" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-functions">Functions</p>
<dl class="c function">
<dt id="c.log_init">
<span class="target" id="full_2include_2log_2log_8h_1a2508fad025e49f9746b6c178dce6917e"></span><span class="pre">void</span> <code class="sig-name descname"><span class="pre">log_init</span></code><span class="sig-paren">(</span><span class="pre">void</span><span class="sig-paren">)</span><a class="headerlink" href="#c.log_init" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_list_get_next">
<span class="target" id="full_2include_2log_2log_8h_1ae9320c228e4d555a4778c12dcfeb8bb2"></span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log" title="log"><span class="pre">log</span></a> <span class="pre">*</span><code class="sig-name descname"><span class="pre">log_list_get_next</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log" title="log"><span class="pre">log</span></a><span class="pre">*</span><span class="sig-paren">)</span><a class="headerlink" href="#c.log_list_get_next" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_module_register">
<span class="target" id="full_2include_2log_2log_8h_1a67f9a573fee1ceff149242ac1da19c6f"></span><span class="pre">uint8_t</span> <code class="sig-name descname"><span class="pre">log_module_register</span></code><span class="sig-paren">(</span><span class="pre">uint8_t</span> <em><span class="pre">id</span></em>, <em class="property"><span class="pre">const</span></em> <span class="pre">char</span> <span class="pre">*</span><em><span class="pre">name</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.log_module_register" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_module_get_name">
<span class="target" id="full_2include_2log_2log_8h_1a52cf7fd7192c68c1b91e7f84b1338dd1"></span><em class="property"><span class="pre">const</span></em> <span class="pre">char</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">log_module_get_name</span></code><span class="sig-paren">(</span><span class="pre">uint8_t</span> <em><span class="pre">id</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.log_module_get_name" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_register">
<span class="target" id="full_2include_2log_2log_8h_1aed7fcd6a580a9f1fd21bf4d5f0ff1b93"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">log_register</span></code><span class="sig-paren">(</span><span class="pre">char</span> <span class="pre">*</span><em><span class="pre">name</span></em>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_register" title="log"><span class="pre">log</span></a> <span class="pre">*</span><em><span class="pre">log</span></em>, <em class="property"><span class="pre">const</span></em> <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_handler" title="log_handler"><span class="pre">log_handler</span></a><span class="pre">*</span>, <span class="pre">void</span> <span class="pre">*</span><em><span class="pre">arg</span></em>, <span class="pre">uint8_t</span> <em><span class="pre">level</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.log_register" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_append_typed">
<span class="target" id="full_2include_2log_2log_8h_1a7f999d5e80a0a42a54e444f56e959be2"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">log_append_typed</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log" title="log"><span class="pre">log</span></a><span class="pre">*</span>, <span class="pre">uint8_t</span>, <span class="pre">uint8_t</span>, <span class="pre">uint8_t</span>, <span class="pre">void</span><span class="pre">*</span>, <span class="pre">uint16_t</span><span class="sig-paren">)</span><a class="headerlink" href="#c.log_append_typed" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_append_mbuf_typed">
<span class="target" id="full_2include_2log_2log_8h_1abac1fb8ae408af95ef9484d3cb8859c3"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">log_append_mbuf_typed</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log" title="log"><span class="pre">log</span></a><span class="pre">*</span>, <span class="pre">uint8_t</span>, <span class="pre">uint8_t</span>, <span class="pre">uint8_t</span>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="../../core_os/mbuf/mbuf.html#c.os_mbuf" title="os_mbuf"><span class="pre">os_mbuf</span></a><span class="pre">*</span><span class="sig-paren">)</span><a class="headerlink" href="#c.log_append_mbuf_typed" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_append">
<span class="target" id="full_2include_2log_2log_8h_1a10393bc5be19f2b3d125f819577e3971"></span><em class="property"><span class="pre">static</span></em> <em class="property"><span class="pre">inline</span></em> <span class="pre">int</span> <code class="sig-name descname"><span class="pre">log_append</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_append" title="log"><span class="pre">log</span></a> <span class="pre">*</span><em><span class="pre">log</span></em>, <span class="pre">uint8_t</span> <em><span class="pre">module</span></em>, <span class="pre">uint8_t</span> <em><span class="pre">level</span></em>, <span class="pre">void</span> <span class="pre">*</span><em><span class="pre">data</span></em>, <span class="pre">uint16_t</span> <em><span class="pre">len</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.log_append" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_append_mbuf">
<span class="target" id="full_2include_2log_2log_8h_1ac6e318ca6cce6eff5ebbd6e83d06b077"></span><em class="property"><span class="pre">static</span></em> <em class="property"><span class="pre">inline</span></em> <span class="pre">int</span> <code class="sig-name descname"><span class="pre">log_append_mbuf</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_append_mbuf" title="log"><span class="pre">log</span></a> <span class="pre">*</span><em><span class="pre">log</span></em>, <span class="pre">uint8_t</span> <em><span class="pre">module</span></em>, <span class="pre">uint8_t</span> <em><span class="pre">level</span></em>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="../../core_os/mbuf/mbuf.html#c.os_mbuf" title="os_mbuf"><span class="pre">os_mbuf</span></a> <span class="pre">*</span><em><span class="pre">om</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.log_append_mbuf" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_printf">
<span class="target" id="full_2include_2log_2log_8h_1a38fec70c55638a04ee8e350dc7c68e23"></span><span class="pre">void</span> <code class="sig-name descname"><span class="pre">log_printf</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_printf" title="log"><span class="pre">log</span></a> <span class="pre">*</span><em><span class="pre">log</span></em>, <span class="pre">uint16_t</span>, <span class="pre">uint16_t</span>, <span class="pre">char</span><span class="pre">*</span>, <span class="pre">...</span><span class="sig-paren">)</span><a class="headerlink" href="#c.log_printf" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_read">
<span class="target" id="full_2include_2log_2log_8h_1a5c69ec30ce725dcde16eda0cbff96068"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">log_read</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_read" title="log"><span class="pre">log</span></a> <span class="pre">*</span><em><span class="pre">log</span></em>, <span class="pre">void</span> <span class="pre">*</span><em><span class="pre">dptr</span></em>, <span class="pre">void</span> <span class="pre">*</span><em><span class="pre">buf</span></em>, <span class="pre">uint16_t</span> <em><span class="pre">off</span></em>, <span class="pre">uint16_t</span> <em><span class="pre">len</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.log_read" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_read_mbuf">
<span class="target" id="full_2include_2log_2log_8h_1ad37e8ee63ba278e3c2116329ade0ecdb"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">log_read_mbuf</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_read_mbuf" title="log"><span class="pre">log</span></a> <span class="pre">*</span><em><span class="pre">log</span></em>, <span class="pre">void</span> <span class="pre">*</span><em><span class="pre">dptr</span></em>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="../../core_os/mbuf/mbuf.html#c.os_mbuf" title="os_mbuf"><span class="pre">os_mbuf</span></a> <span class="pre">*</span><em><span class="pre">om</span></em>, <span class="pre">uint16_t</span> <em><span class="pre">off</span></em>, <span class="pre">uint16_t</span> <em><span class="pre">len</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.log_read_mbuf" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_walk">
<span class="target" id="full_2include_2log_2log_8h_1a4f49fb75a702ea9b33d716fef212cd79"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">log_walk</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_walk" title="log"><span class="pre">log</span></a> <span class="pre">*</span><em><span class="pre">log</span></em>, <a class="reference internal" href="#c.log_walk_func_t" title="log_walk_func_t"><span class="pre">log_walk_func_t</span></a> <em><span class="pre">walk_func</span></em>, <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_walk" title="log_offset"><span class="pre">log_offset</span></a> <span class="pre">*</span><em><span class="pre">log_offset</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.log_walk" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_flush">
<span class="target" id="full_2include_2log_2log_8h_1accfb1bc70fe3fa3abe408c712674ec30"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">log_flush</span></code><span class="sig-paren">(</span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_flush" title="log"><span class="pre">log</span></a> <span class="pre">*</span><em><span class="pre">log</span></em><span class="sig-paren">)</span><a class="headerlink" href="#c.log_flush" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c function">
<dt id="c.log_nmgr_register_group">
<span class="target" id="full_2include_2log_2log_8h_1ac8206ec2c106a9ce9424a39b386d12c4"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">log_nmgr_register_group</span></code><span class="sig-paren">(</span><span class="pre">void</span><span class="sig-paren">)</span><a class="headerlink" href="#c.log_nmgr_register_group" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-variables">Variables</p>
<dl class="c var">
<dt id="c.g_log_info">
<span class="target" id="full_2include_2log_2log_8h_1a8eb5241069c3cad92f04bd3f9d13faf0"></span><em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_info" title="log_info"><span class="pre">log_info</span></a> <code class="sig-name descname"><span class="pre">g_log_info</span></code><a class="headerlink" href="#c.g_log_info" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_console_handler">
<span class="target" id="full_2include_2log_2log_8h_1a881289dbd9a79c6225239e2b72cec4a8"></span><em class="property"><span class="pre">const</span></em> <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_handler" title="log_handler"><span class="pre">log_handler</span></a> <code class="sig-name descname"><span class="pre">log_console_handler</span></code><a class="headerlink" href="#c.log_console_handler" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_cbmem_handler">
<span class="target" id="full_2include_2log_2log_8h_1a649ef9595a9a890e38154e54bf243c71"></span><em class="property"><span class="pre">const</span></em> <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_handler" title="log_handler"><span class="pre">log_handler</span></a> <code class="sig-name descname"><span class="pre">log_cbmem_handler</span></code><a class="headerlink" href="#c.log_cbmem_handler" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_fcb_handler">
<span class="target" id="full_2include_2log_2log_8h_1ae85ac1f42826982b5f0198fd19fc6b46"></span><em class="property"><span class="pre">const</span></em> <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_handler" title="log_handler"><span class="pre">log_handler</span></a> <code class="sig-name descname"><span class="pre">log_fcb_handler</span></code><a class="headerlink" href="#c.log_fcb_handler" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_fcb_slot1_handler">
<span class="target" id="full_2include_2log_2log_8h_1a73ba118a04cf811f881d627996af953b"></span><em class="property"><span class="pre">const</span></em> <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_handler" title="log_handler"><span class="pre">log_handler</span></a> <code class="sig-name descname"><span class="pre">log_fcb_slot1_handler</span></code><a class="headerlink" href="#c.log_fcb_slot1_handler" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
<dl class="c struct">
<dt id="c.log_info">
<span class="target" id="structlog__info"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">log_info</span></code><a class="headerlink" href="#c.log_info" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;log.h&gt;</em><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="c var">
<dt id="c.log_info.li_next_index">
<span class="target" id="structlog__info_1a08c226eb088ebc9134ccf1add52e76a9"></span><span class="pre">uint32_t</span> <code class="sig-name descname"><span class="pre">li_next_index</span></code><a class="headerlink" href="#c.log_info.li_next_index" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_info.li_version">
<span class="target" id="structlog__info_1a2e622a5f1246ec10adfdc4cd012b9451"></span><span class="pre">uint8_t</span> <code class="sig-name descname"><span class="pre">li_version</span></code><a class="headerlink" href="#c.log_info.li_version" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
</dd></dl>
<dl class="c struct">
<dt id="c.log_offset">
<span class="target" id="structlog__offset"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">log_offset</span></code><a class="headerlink" href="#c.log_offset" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;log.h&gt;</em><p>Used for walks and reads; indicates part of log to access. </p>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="c var">
<dt id="c.log_offset.lo_ts">
<span class="target" id="structlog__offset_1abf717145b82aec45493449d150b39cf0"></span><span class="pre">int64_t</span> <code class="sig-name descname"><span class="pre">lo_ts</span></code><a class="headerlink" href="#c.log_offset.lo_ts" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_offset.lo_index">
<span class="target" id="structlog__offset_1a4c8cec5bf5b2ab35d0bce92e09dd5aa5"></span><span class="pre">uint32_t</span> <code class="sig-name descname"><span class="pre">lo_index</span></code><a class="headerlink" href="#c.log_offset.lo_index" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_offset.lo_data_len">
<span class="target" id="structlog__offset_1a158a12500f1125b1e7575fa9856d9894"></span><span class="pre">uint32_t</span> <code class="sig-name descname"><span class="pre">lo_data_len</span></code><a class="headerlink" href="#c.log_offset.lo_data_len" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_offset.lo_arg">
<span class="target" id="structlog__offset_1aba3119779984fc002c80bbbe797ba90f"></span><span class="pre">void</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">lo_arg</span></code><a class="headerlink" href="#c.log_offset.lo_arg" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
</dd></dl>
<dl class="c struct">
<dt id="c.log_handler">
<span class="target" id="structlog__handler"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">log_handler</span></code><a class="headerlink" href="#c.log_handler" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;log.h&gt;</em><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="c var">
<dt id="c.log_handler.log_type">
<span class="target" id="structlog__handler_1ad65f3c291144c9563af323a410aa6a6d"></span><span class="pre">int</span> <code class="sig-name descname"><span class="pre">log_type</span></code><a class="headerlink" href="#c.log_handler.log_type" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_handler.log_read">
<span class="target" id="structlog__handler_1ae6b70c2bf453741b0fe1d41d2e866112"></span><a class="reference internal" href="#c.lh_read_func_t" title="lh_read_func_t"><span class="pre">lh_read_func_t</span></a> <code class="sig-name descname"><span class="pre">log_read</span></code><a class="headerlink" href="#c.log_handler.log_read" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_handler.log_read_mbuf">
<span class="target" id="structlog__handler_1aa2f5adc40b8c4203dcec0990780b915c"></span><a class="reference internal" href="#c.lh_read_mbuf_func_t" title="lh_read_mbuf_func_t"><span class="pre">lh_read_mbuf_func_t</span></a> <code class="sig-name descname"><span class="pre">log_read_mbuf</span></code><a class="headerlink" href="#c.log_handler.log_read_mbuf" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_handler.log_append">
<span class="target" id="structlog__handler_1a662b191acd442da61df5ddd97c252229"></span><a class="reference internal" href="#c.lh_append_func_t" title="lh_append_func_t"><span class="pre">lh_append_func_t</span></a> <code class="sig-name descname"><span class="pre">log_append</span></code><a class="headerlink" href="#c.log_handler.log_append" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_handler.log_append_mbuf">
<span class="target" id="structlog__handler_1a0a9057b12824b959f6aabaf432f85d0a"></span><a class="reference internal" href="#c.lh_append_mbuf_func_t" title="lh_append_mbuf_func_t"><span class="pre">lh_append_mbuf_func_t</span></a> <code class="sig-name descname"><span class="pre">log_append_mbuf</span></code><a class="headerlink" href="#c.log_handler.log_append_mbuf" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_handler.log_walk">
<span class="target" id="structlog__handler_1afaa4f87e34e4ebca54b8fc4f5ec9ca95"></span><a class="reference internal" href="#c.lh_walk_func_t" title="lh_walk_func_t"><span class="pre">lh_walk_func_t</span></a> <code class="sig-name descname"><span class="pre">log_walk</span></code><a class="headerlink" href="#c.log_handler.log_walk" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_handler.log_flush">
<span class="target" id="structlog__handler_1a9088643ee5fa07573e9636b6f920085a"></span><a class="reference internal" href="#c.lh_flush_func_t" title="lh_flush_func_t"><span class="pre">lh_flush_func_t</span></a> <code class="sig-name descname"><span class="pre">log_flush</span></code><a class="headerlink" href="#c.log_handler.log_flush" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log_handler.log_registered">
<span class="target" id="structlog__handler_1a1e9bff519eaea7728d99be4d62b5da69"></span><a class="reference internal" href="#c.lh_registered_func_t" title="lh_registered_func_t"><span class="pre">lh_registered_func_t</span></a> <code class="sig-name descname"><span class="pre">log_registered</span></code><a class="headerlink" href="#c.log_handler.log_registered" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
</dd></dl>
<dl class="c struct">
<dt id="c.log">
<span class="target" id="structlog"></span><em class="property"><span class="pre">struct</span> </em><code class="sig-name descname"><span class="pre">log</span></code><a class="headerlink" href="#c.log" title="Permalink to this definition"></a><br /></dt>
<dd><em>#include &lt;log.h&gt;</em><div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-functions">Public Functions</p>
<dl class="c function">
<dt>
<span class="target" id="structlog_1a6d07240ed4fa7ac4a0076a255dc61ff5"></span><code class="sig-name descname"><span class="pre">STAILQ_ENTRY</span> <span class="pre">(log)</span> <span class="pre">l_next</span></code></dt>
<dd></dd></dl>
</div>
<div class="breathe-sectiondef docutils container">
<p class="breathe-sectiondef-title rubric" id="breathe-section-title-public-members">Public Members</p>
<dl class="c var">
<dt id="c.log.l_name">
<span class="target" id="structlog_1a51e12071c1c1b1e792701a60f5bc0299"></span><span class="pre">char</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">l_name</span></code><a class="headerlink" href="#c.log.l_name" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log.l_log">
<span class="target" id="structlog_1ac65e462e8879b0aa7afacdc652bb1836"></span><em class="property"><span class="pre">const</span></em> <em class="property"><span class="pre">struct</span></em> <a class="reference internal" href="#c.log_handler" title="log_handler"><span class="pre">log_handler</span></a> <span class="pre">*</span><code class="sig-name descname"><span class="pre">l_log</span></code><a class="headerlink" href="#c.log.l_log" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log.l_arg">
<span class="target" id="structlog_1a789d9412642d0df93d82cb935ff0e9b1"></span><span class="pre">void</span> <span class="pre">*</span><code class="sig-name descname"><span class="pre">l_arg</span></code><a class="headerlink" href="#c.log.l_arg" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
<dl class="c var">
<dt id="c.log.l_level">
<span class="target" id="structlog_1a79e2701bcf76fccfcf8df56835d8cd2b"></span><span class="pre">uint8_t</span> <code class="sig-name descname"><span class="pre">l_level</span></code><a class="headerlink" href="#c.log.l_level" title="Permalink to this definition"></a><br /></dt>
<dd></dd></dl>
</div>
</dd></dl>
</div>
</div>
</div>
</div>
</div>
<div class="rst-footer-buttons row" role="navigation" aria-label="footer navigation">
<a href="../../../network/index.html" class="btn btn-neutral float-right" title="BLE User Guide" accesskey="n">Next: BLE User Guide <span class="fa fa-arrow-circle-right"></span></a>
<a href="../stats/stats.html" class="btn btn-neutral" title="Statistics Module" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous: Statistics Module</a>
</div>
</div>
</div>
</div>
<!-- ENDS CONTENT SECTION -->
</div>
<!-- ENDS .content -->
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-xs-12">
<p class="copyright">Apache Mynewt is available under Apache License, version 2.0.</p>
</div>
<div class="col-xs-12">
<div class="logos">
<img src="../../../_static/img/asf_logo_wide_small.png" alt="Apache" title="Apache">
<small class="footnote">
Apache Mynewt, Mynewt, Apache, the Apache feather logo, and the Apache Mynewt project logo are either
registered trademarks or trademarks of the Apache Software Foundation in the United States and other countries.
</small>
<a href="">
<img src="../../../_static/img/add_to_slack.png" alt="Slack Icon" title="Join our Slack Community" />
</a>
</div>
</div>
</div>
</div>
</footer>
</div>
<!-- ENDS #wrapper -->
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT:'../../../',
VERSION:'latest',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
LINK_SUFFIX: '.html'
};
</script>
<script type="text/javascript" src="../../../_static/jquery.js"></script>
<script type="text/javascript" src="../../../_static/underscore.js"></script>
<script type="text/javascript" src="../../../_static/doctools.js"></script>
<script type="text/javascript" src="../../../_static/js/bootstrap-3.0.3.min.js"></script>
<script type="text/javascript" src="../../../_static/js/affix.js"></script>
<script type="text/javascript" src="../../../_static/js/main.js"></script>
</body>
</html>