This file is indexed.

/usr/share/doc/libqb-dev/html/simplelog_8c-example.html is in libqb-doc 1.0.1-1ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libqb: simplelog.c</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">libqb
   &#160;<span id="projectnumber">1.0.1</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">simplelog.c</div>  </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><span class="comment">/*</span></div><div class="line"><span class="comment"> * Copyright (c) 2011 Red Hat, Inc.</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> * All rights reserved.</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> * Author: Angus Salkeld &lt;asalkeld@redhat.com&gt;</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> * libqb is free software: you can redistribute it and/or modify</span></div><div class="line"><span class="comment"> * it under the terms of the GNU Lesser General Public License as published by</span></div><div class="line"><span class="comment"> * the Free Software Foundation, either version 2.1 of the License, or</span></div><div class="line"><span class="comment"> * (at your option) any later version.</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> * libqb is distributed in the hope that it will be useful,</span></div><div class="line"><span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span></div><div class="line"><span class="comment"> * GNU Lesser General Public License for more details.</span></div><div class="line"><span class="comment"> *</span></div><div class="line"><span class="comment"> * You should have received a copy of the GNU Lesser General Public License</span></div><div class="line"><span class="comment"> * along with libqb.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div><div class="line"><span class="comment"> */</span></div><div class="line"><span class="preprocessor">#include &quot;os_base.h&quot;</span></div><div class="line"><span class="preprocessor">#include &lt;signal.h&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;syslog.h&gt;</span></div><div class="line"></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="qbdefs_8h.html">qb/qbdefs.h</a>&gt;</span></div><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="qblog_8h.html">qb/qblog.h</a>&gt;</span></div><div class="line"></div><div class="line"><span class="preprocessor">#define MY_TAG_ONE   (1)</span></div><div class="line"><span class="preprocessor">#define MY_TAG_TWO   (1 &lt;&lt; 1)</span></div><div class="line"><span class="preprocessor">#define MY_TAG_THREE (1 &lt;&lt; 2)</span></div><div class="line"></div><div class="line"><span class="keyword">static</span> uint8_t _log_priority = LOG_WARNING;</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line">func_one(<span class="keywordtype">void</span>)</div><div class="line">{</div><div class="line">        FILE *fd;</div><div class="line"></div><div class="line">        <a name="a0"></a><a class="code" href="qblog_8h.html#a952560e8e2bc7e6221f46e5f06485ff7">qb_enter</a>();</div><div class="line">        <a name="a1"></a><a class="code" href="qblog_8h.html#a4d29d79cd6bd07e06da9fb56251922f9">qb_logt</a>(LOG_DEBUG, MY_TAG_TWO, <span class="stringliteral">&quot;arf arf?&quot;</span>);</div><div class="line">        <a class="code" href="qblog_8h.html#a4d29d79cd6bd07e06da9fb56251922f9">qb_logt</a>(LOG_CRIT, MY_TAG_THREE, <span class="stringliteral">&quot;arrrg!&quot;</span>);</div><div class="line">        <a class="code" href="qblog_8h.html#a4d29d79cd6bd07e06da9fb56251922f9">qb_logt</a>(134, MY_TAG_THREE, <span class="stringliteral">&quot;big priority&quot;</span>);</div><div class="line">        <a class="code" href="qblog_8h.html#a4d29d79cd6bd07e06da9fb56251922f9">qb_logt</a>(LOG_ERR, MY_TAG_THREE, <span class="stringliteral">&quot;oops, I did it again&quot;</span>);</div><div class="line">        <a name="a2"></a><a class="code" href="qblog_8h.html#ac1dcd0ac044680eead32eae864928d71">qb_log</a>(LOG_INFO, <span class="stringliteral">&quot;are you aware ...&quot;</span>);</div><div class="line"></div><div class="line">        fd = fopen(<span class="stringliteral">&quot;/nothing.txt&quot;</span>, <span class="stringliteral">&quot;r+&quot;</span>);</div><div class="line">        <span class="keywordflow">if</span> (fd == NULL) {</div><div class="line">                <a name="a3"></a><a class="code" href="qblog_8h.html#a61d34b7974bdac7471a3b94b232bbf48">qb_perror</a>(LOG_ERR, <span class="stringliteral">&quot;can&#39;t open(\&quot;/nothing.txt\&quot;)&quot;</span>);</div><div class="line">        } <span class="keywordflow">else</span> {</div><div class="line">                fclose(fd);</div><div class="line">        }</div><div class="line">        <a name="a4"></a><a class="code" href="qblog_8h.html#a5c561626e0f2f23f595c43468d6f674e">qb_leave</a>();</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line">func_two(<span class="keywordtype">void</span>)</div><div class="line">{</div><div class="line">        <a class="code" href="qblog_8h.html#a952560e8e2bc7e6221f46e5f06485ff7">qb_enter</a>();</div><div class="line">        <a class="code" href="qblog_8h.html#a4d29d79cd6bd07e06da9fb56251922f9">qb_logt</a>(LOG_DEBUG, 0, <span class="stringliteral">&quot;arf arf?&quot;</span>);</div><div class="line">        <a class="code" href="qblog_8h.html#a4d29d79cd6bd07e06da9fb56251922f9">qb_logt</a>(LOG_CRIT, MY_TAG_ONE, <span class="stringliteral">&quot;arrrg!&quot;</span>);</div><div class="line">        <a class="code" href="qblog_8h.html#ac1dcd0ac044680eead32eae864928d71">qb_log</a>(LOG_ERR, <span class="stringliteral">&quot;oops, I did it again&quot;</span>);</div><div class="line">        <a class="code" href="qblog_8h.html#a4d29d79cd6bd07e06da9fb56251922f9">qb_logt</a>(LOG_INFO, MY_TAG_THREE, <span class="stringliteral">&quot;are you aware ...&quot;</span>);</div><div class="line">        <a class="code" href="qblog_8h.html#a5c561626e0f2f23f595c43468d6f674e">qb_leave</a>();</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line">show_usage(<span class="keyword">const</span> <span class="keywordtype">char</span> *name)</div><div class="line">{</div><div class="line">        printf(<span class="stringliteral">&quot;usage: \n&quot;</span>);</div><div class="line">        printf(<span class="stringliteral">&quot;%s &lt;options&gt;\n&quot;</span>, name);</div><div class="line">        printf(<span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line">        printf(<span class="stringliteral">&quot;  options:\n&quot;</span>);</div><div class="line">        printf(<span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line">        printf(<span class="stringliteral">&quot;  -v             verbose\n&quot;</span>);</div><div class="line">        printf(<span class="stringliteral">&quot;  -t             threaded logging\n&quot;</span>);</div><div class="line">        printf(<span class="stringliteral">&quot;  -o             log to stdout\n&quot;</span>);</div><div class="line">        printf(<span class="stringliteral">&quot;  -e             log to stderr\n&quot;</span>);</div><div class="line">        printf(<span class="stringliteral">&quot;  -b             log to blackbox\n&quot;</span>);</div><div class="line">        printf(<span class="stringliteral">&quot;  -f &lt;filename&gt;  log to a file\n&quot;</span>);</div><div class="line">        printf(<span class="stringliteral">&quot;  -h             show this help text\n&quot;</span>);</div><div class="line">        printf(<span class="stringliteral">&quot;\n&quot;</span>);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> int32_t do_blackbox = <a name="a5"></a><a class="code" href="qbdefs_8h.html#a3adfa550658b3082a867536d5bcb87d8">QB_FALSE</a>;</div><div class="line"><span class="keyword">static</span> int32_t do_threaded = <a class="code" href="qbdefs_8h.html#a3adfa550658b3082a867536d5bcb87d8">QB_FALSE</a>;</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line">sigsegv_handler(<span class="keywordtype">int</span> sig)</div><div class="line">{</div><div class="line">        (void)signal(SIGSEGV, SIG_DFL);</div><div class="line">        <span class="keywordflow">if</span> (do_blackbox) {</div><div class="line">                <a name="a6"></a><a class="code" href="qblog_8h.html#aeb2f3aaaa5c32b994e0dc9069bb50ce6">qb_log_blackbox_write_to_file</a>(<span class="stringliteral">&quot;simple-log.fdata&quot;</span>);</div><div class="line">        }</div><div class="line">        <a name="a7"></a><a class="code" href="qblog_8h.html#ab19da4babdb23834a25e5865016fb02d">qb_log_ctl</a>(<a name="a8"></a><a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa178ee41f37914617d5d86caf651dab5e">QB_LOG_BLACKBOX</a>, <a name="a9"></a><a class="code" href="qblog_8h.html#aaa6a5dea031c8dc88fbd6d38fd72dee5a05b84aca7698c88c32fed66d60821771">QB_LOG_CONF_ENABLED</a>, <a class="code" href="qbdefs_8h.html#a3adfa550658b3082a867536d5bcb87d8">QB_FALSE</a>);</div><div class="line">        <span class="keyword">raise</span>(SIGSEGV);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *</div><div class="line">my_tags_stringify(uint32_t <a name="a10"></a><a class="code" href="qblog_8h.html#ac3fc73ca2f0f032be6ea70f9e9cb8837">tags</a>)</div><div class="line">{</div><div class="line">        <span class="keywordflow">if</span> (<a name="a11"></a><a class="code" href="qbdefs_8h.html#a429078697a3e130797201e1377bd3fdf">qb_bit_is_set</a>(tags, <a name="a12"></a><a class="code" href="qblog_8h.html#ac357216b86a3fb153c6422c2a44eb0ee">QB_LOG_TAG_LIBQB_MSG_BIT</a>)) {</div><div class="line">                <span class="keywordflow">return</span> <span class="stringliteral">&quot;libqb&quot;</span>;</div><div class="line">        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="qbdefs_8h.html#a429078697a3e130797201e1377bd3fdf">qb_bit_is_set</a>(tags, 0)) {</div><div class="line">                <span class="keywordflow">return</span> <span class="stringliteral">&quot;ONE&quot;</span>;</div><div class="line">        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="qbdefs_8h.html#a429078697a3e130797201e1377bd3fdf">qb_bit_is_set</a>(tags, 1)) {</div><div class="line">                <span class="keywordflow">return</span> <span class="stringliteral">&quot;TWO&quot;</span>;</div><div class="line">        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="qbdefs_8h.html#a429078697a3e130797201e1377bd3fdf">qb_bit_is_set</a>(tags, 2)) {</div><div class="line">                <span class="keywordflow">return</span> <span class="stringliteral">&quot;THREE&quot;</span>;</div><div class="line">        } <span class="keywordflow">else</span> {</div><div class="line">                <span class="keywordflow">return</span> <span class="stringliteral">&quot;MAIN&quot;</span>;</div><div class="line">        }</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line">trace_logger(int32_t t,</div><div class="line">             <span class="keyword">struct</span> <a name="_a13"></a><a class="code" href="structqb__log__callsite.html">qb_log_callsite</a> *cs, time_t timestamp, <span class="keyword">const</span> <span class="keywordtype">char</span> *msg)</div><div class="line">{</div><div class="line">        <span class="keywordtype">char</span> output_buffer[<a name="a14"></a><a class="code" href="qblog_8h.html#a47e2618c6393e677b6001f7836ad4055">QB_LOG_MAX_LEN</a>];</div><div class="line">        output_buffer[0] = <span class="charliteral">&#39;\0&#39;</span>;</div><div class="line">        <a name="a15"></a><a class="code" href="qblog_8h.html#aeddabb17fbbf851f884725d97c52e6d6">qb_log_target_format</a>(t, cs, timestamp, msg, output_buffer);</div><div class="line">        fprintf(stderr, <span class="stringliteral">&quot;%s\n&quot;</span>, output_buffer);</div><div class="line">}</div><div class="line"></div><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span></div><div class="line">m_filter(<span class="keyword">struct</span> <a class="code" href="structqb__log__callsite.html">qb_log_callsite</a> *cs)</div><div class="line">{</div><div class="line">        <span class="keywordflow">if</span> ((cs-&gt;<a name="a16"></a><a class="code" href="structqb__log__callsite.html#a24f9b029f99b46209cde29a5dd64c637">priority</a> &gt;= LOG_ALERT &amp;&amp;</div><div class="line">             cs-&gt;<a class="code" href="structqb__log__callsite.html#a24f9b029f99b46209cde29a5dd64c637">priority</a> &lt;= _log_priority) &amp;&amp;</div><div class="line">            strcmp(cs-&gt;<a name="a17"></a><a class="code" href="structqb__log__callsite.html#ad24e1c82cb7dcf7eb3d7862eb5d7002d">filename</a>, __FILE__) == 0) {</div><div class="line">                <a name="a18"></a><a class="code" href="qbdefs_8h.html#a9bd8ef742f690e1e7461e48869fcf2b3">qb_bit_set</a>(cs-&gt;<a name="a19"></a><a class="code" href="structqb__log__callsite.html#ab47825dd3acbb32bff816d430d992951">targets</a>, <a name="a20"></a><a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa7667606d44f7b11302762237dff2b8ad">QB_LOG_STDERR</a>);</div><div class="line">        } <span class="keywordflow">else</span> {</div><div class="line">                <a name="a21"></a><a class="code" href="qbdefs_8h.html#a4608568d54c624c02441b1e47ba80063">qb_bit_clear</a>(cs-&gt;<a class="code" href="structqb__log__callsite.html#ab47825dd3acbb32bff816d430d992951">targets</a>, <a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa7667606d44f7b11302762237dff2b8ad">QB_LOG_STDERR</a>);</div><div class="line">        }</div><div class="line">}</div><div class="line"></div><div class="line">int32_t</div><div class="line">main(int32_t argc, <span class="keywordtype">char</span> *argv[])</div><div class="line">{</div><div class="line">        <span class="keyword">const</span> <span class="keywordtype">char</span> *options = <span class="stringliteral">&quot;vhteobdf:&quot;</span>;</div><div class="line">        int32_t opt;</div><div class="line">        int32_t tracer;</div><div class="line">        int32_t do_stderr = <a class="code" href="qbdefs_8h.html#a3adfa550658b3082a867536d5bcb87d8">QB_FALSE</a>;</div><div class="line">        int32_t do_stdout = <a class="code" href="qbdefs_8h.html#a3adfa550658b3082a867536d5bcb87d8">QB_FALSE</a>;</div><div class="line">        int32_t do_dump_blackbox = <a class="code" href="qbdefs_8h.html#a3adfa550658b3082a867536d5bcb87d8">QB_FALSE</a>;</div><div class="line">        <span class="keywordtype">char</span> *logfile = NULL;</div><div class="line">        int32_t log_fd = -1;</div><div class="line"></div><div class="line">        <span class="keywordflow">while</span> ((opt = getopt(argc, argv, options)) != -1) {</div><div class="line">                <span class="keywordflow">switch</span> (opt) {</div><div class="line">                <span class="keywordflow">case</span> <span class="charliteral">&#39;d&#39;</span>:</div><div class="line">                        do_dump_blackbox = <a name="a22"></a><a class="code" href="qbdefs_8h.html#aa53d378f26033634af24bd526090073e">QB_TRUE</a>;</div><div class="line">                        <span class="keywordflow">break</span>;</div><div class="line">                <span class="keywordflow">case</span> <span class="charliteral">&#39;t&#39;</span>:</div><div class="line">                        do_threaded = <a class="code" href="qbdefs_8h.html#aa53d378f26033634af24bd526090073e">QB_TRUE</a>;</div><div class="line">                        <span class="keywordflow">break</span>;</div><div class="line">                <span class="keywordflow">case</span> <span class="charliteral">&#39;e&#39;</span>:</div><div class="line">                        do_stderr = <a class="code" href="qbdefs_8h.html#aa53d378f26033634af24bd526090073e">QB_TRUE</a>;</div><div class="line">                        <span class="keywordflow">break</span>;</div><div class="line">                <span class="keywordflow">case</span> <span class="charliteral">&#39;o&#39;</span>:</div><div class="line">                        do_stdout = <a class="code" href="qbdefs_8h.html#aa53d378f26033634af24bd526090073e">QB_TRUE</a>;</div><div class="line">                        <span class="keywordflow">break</span>;</div><div class="line">                <span class="keywordflow">case</span> <span class="charliteral">&#39;b&#39;</span>:</div><div class="line">                        do_blackbox = <a class="code" href="qbdefs_8h.html#aa53d378f26033634af24bd526090073e">QB_TRUE</a>;</div><div class="line">                        <span class="keywordflow">break</span>;</div><div class="line">                <span class="keywordflow">case</span> <span class="charliteral">&#39;f&#39;</span>:</div><div class="line">                        logfile = optarg;</div><div class="line">                        <span class="keywordflow">break</span>;</div><div class="line">                <span class="keywordflow">case</span> <span class="charliteral">&#39;v&#39;</span>:</div><div class="line">                        _log_priority++;</div><div class="line">                        <span class="keywordflow">break</span>;</div><div class="line">                <span class="keywordflow">case</span> <span class="charliteral">&#39;h&#39;</span>:</div><div class="line">                <span class="keywordflow">default</span>:</div><div class="line">                        show_usage(argv[0]);</div><div class="line">                        exit(0);</div><div class="line">                        <span class="keywordflow">break</span>;</div><div class="line">                }</div><div class="line">        }</div><div class="line"></div><div class="line">        <span class="keywordflow">if</span> (do_dump_blackbox) {</div><div class="line">                <a name="a23"></a><a class="code" href="qblog_8h.html#a39a95d68c71ad0d2572cdb7b282b531f">qb_log_blackbox_print_from_file</a>(<span class="stringliteral">&quot;simple-log.fdata&quot;</span>);</div><div class="line">                exit(0);</div><div class="line">        }</div><div class="line"></div><div class="line">        signal(SIGSEGV, sigsegv_handler);</div><div class="line"></div><div class="line">        <a name="a24"></a><a class="code" href="qblog_8h.html#a4261a1e62a9195139290b15793b8c4bc">qb_log_init</a>(<span class="stringliteral">&quot;simple-log&quot;</span>, LOG_USER, LOG_INFO);</div><div class="line">        <a class="code" href="qblog_8h.html#ab19da4babdb23834a25e5865016fb02d">qb_log_ctl</a>(<a name="a25"></a><a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa3811428d4ed722d87211411146622ad4">QB_LOG_SYSLOG</a>, <a name="a26"></a><a class="code" href="qblog_8h.html#aaa6a5dea031c8dc88fbd6d38fd72dee5a190db017221bea9bc7c3683ca0dcd023">QB_LOG_CONF_THREADED</a>, do_threaded);</div><div class="line">        <a name="a27"></a><a class="code" href="qblog_8h.html#a84d94e1a167006c7f69407a56db18291">qb_log_tags_stringify_fn_set</a>(my_tags_stringify);</div><div class="line"></div><div class="line">        <span class="keywordflow">if</span> (do_stderr) {</div><div class="line">                <a name="a28"></a><a class="code" href="qblog_8h.html#a8767a0f8c8af738dfdcd7931c73c535f">qb_log_filter_fn_set</a>(m_filter);</div><div class="line">                <a name="a29"></a><a class="code" href="qblog_8h.html#a0e8cf298ff5fd224a16537b30a899df9">qb_log_format_set</a>(<a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa7667606d44f7b11302762237dff2b8ad">QB_LOG_STDERR</a>, <span class="stringliteral">&quot;[%p] %4g: %f:%l %b&quot;</span>);</div><div class="line">                <a class="code" href="qblog_8h.html#ab19da4babdb23834a25e5865016fb02d">qb_log_ctl</a>(<a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa7667606d44f7b11302762237dff2b8ad">QB_LOG_STDERR</a>, <a class="code" href="qblog_8h.html#aaa6a5dea031c8dc88fbd6d38fd72dee5a05b84aca7698c88c32fed66d60821771">QB_LOG_CONF_ENABLED</a>, <a class="code" href="qbdefs_8h.html#aa53d378f26033634af24bd526090073e">QB_TRUE</a>);</div><div class="line"></div><div class="line">                tracer = <a name="a30"></a><a class="code" href="qblog_8h.html#a59cc8c69b2dafaf854e0f35a1c87e563">qb_log_custom_open</a>(trace_logger, NULL, NULL, NULL);</div><div class="line">                <a class="code" href="qblog_8h.html#ab19da4babdb23834a25e5865016fb02d">qb_log_ctl</a>(tracer, <a class="code" href="qblog_8h.html#aaa6a5dea031c8dc88fbd6d38fd72dee5a05b84aca7698c88c32fed66d60821771">QB_LOG_CONF_ENABLED</a>, <a class="code" href="qbdefs_8h.html#aa53d378f26033634af24bd526090073e">QB_TRUE</a>);</div><div class="line">                <a class="code" href="qblog_8h.html#a0e8cf298ff5fd224a16537b30a899df9">qb_log_format_set</a>(tracer, <span class="stringliteral">&quot;%4g: %n() %b&quot;</span>);</div><div class="line">                <a name="a31"></a><a class="code" href="qblog_8h.html#a13405551d5b2504b5bdc216da6c48c9c">qb_log_filter_ctl2</a>(tracer, <a name="a32"></a><a class="code" href="qblog_8h.html#a0bcfbbefc6d73b62e72b135ff29fe03faaae48ba27a8dafc2163aaf9637d5ce2f">QB_LOG_FILTER_ADD</a>,</div><div class="line">                                   <a name="a33"></a><a class="code" href="qblog_8h.html#aa23b899fd898c0c999357532f187fc0fa868c37c795816ee3d64143c4090afbb6">QB_LOG_FILTER_FILE</a>, __FILE__,</div><div class="line">                                   <a name="a34"></a><a class="code" href="qblog_8h.html#af7abc145380f1916838e42f9272aa0f6">LOG_TRACE</a>, 200);</div><div class="line">        }</div><div class="line">        <span class="keywordflow">if</span> (do_stdout) {</div><div class="line">                <a class="code" href="qblog_8h.html#a13405551d5b2504b5bdc216da6c48c9c">qb_log_filter_ctl2</a>(<a name="a35"></a><a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa4e83afef566371fa86bd3c4c87b336f9">QB_LOG_STDOUT</a>, <a class="code" href="qblog_8h.html#a0bcfbbefc6d73b62e72b135ff29fe03faaae48ba27a8dafc2163aaf9637d5ce2f">QB_LOG_FILTER_ADD</a>,</div><div class="line">                                   <a class="code" href="qblog_8h.html#aa23b899fd898c0c999357532f187fc0fa868c37c795816ee3d64143c4090afbb6">QB_LOG_FILTER_FILE</a>, __FILE__,</div><div class="line">                                   LOG_ALERT, <a name="a36"></a><a class="code" href="qbdefs_8h.html#a8121a650464c109ec988cc67860280da">QB_MIN</a>(LOG_DEBUG, _log_priority));</div><div class="line">                <a class="code" href="qblog_8h.html#a0e8cf298ff5fd224a16537b30a899df9">qb_log_format_set</a>(<a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa4e83afef566371fa86bd3c4c87b336f9">QB_LOG_STDOUT</a>, <span class="stringliteral">&quot;[%p] %4g: %f:%l %b&quot;</span>);</div><div class="line">                <a class="code" href="qblog_8h.html#ab19da4babdb23834a25e5865016fb02d">qb_log_ctl</a>(<a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa4e83afef566371fa86bd3c4c87b336f9">QB_LOG_STDOUT</a>, <a class="code" href="qblog_8h.html#aaa6a5dea031c8dc88fbd6d38fd72dee5a05b84aca7698c88c32fed66d60821771">QB_LOG_CONF_ENABLED</a>, <a class="code" href="qbdefs_8h.html#aa53d378f26033634af24bd526090073e">QB_TRUE</a>);</div><div class="line">        }</div><div class="line">        <span class="keywordflow">if</span> (do_blackbox) {</div><div class="line">                <a name="a37"></a><a class="code" href="qblog_8h.html#a687531ff2f457ea5fe63dc91f74be783">qb_log_filter_ctl</a>(<a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa178ee41f37914617d5d86caf651dab5e">QB_LOG_BLACKBOX</a>, <a class="code" href="qblog_8h.html#a0bcfbbefc6d73b62e72b135ff29fe03faaae48ba27a8dafc2163aaf9637d5ce2f">QB_LOG_FILTER_ADD</a>,</div><div class="line">                                  <a class="code" href="qblog_8h.html#aa23b899fd898c0c999357532f187fc0fa868c37c795816ee3d64143c4090afbb6">QB_LOG_FILTER_FILE</a>, <span class="stringliteral">&quot;*&quot;</span>, LOG_DEBUG);</div><div class="line">                <a class="code" href="qblog_8h.html#ab19da4babdb23834a25e5865016fb02d">qb_log_ctl</a>(<a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa178ee41f37914617d5d86caf651dab5e">QB_LOG_BLACKBOX</a>, <a name="a38"></a><a class="code" href="qblog_8h.html#aaa6a5dea031c8dc88fbd6d38fd72dee5a89f358b4a83f94b1efd0e6942506f24d">QB_LOG_CONF_SIZE</a>, 4096);</div><div class="line">                <a class="code" href="qblog_8h.html#ab19da4babdb23834a25e5865016fb02d">qb_log_ctl</a>(<a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa178ee41f37914617d5d86caf651dab5e">QB_LOG_BLACKBOX</a>, <a class="code" href="qblog_8h.html#aaa6a5dea031c8dc88fbd6d38fd72dee5a190db017221bea9bc7c3683ca0dcd023">QB_LOG_CONF_THREADED</a>, <a class="code" href="qbdefs_8h.html#a3adfa550658b3082a867536d5bcb87d8">QB_FALSE</a>);</div><div class="line">                <a class="code" href="qblog_8h.html#ab19da4babdb23834a25e5865016fb02d">qb_log_ctl</a>(<a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa178ee41f37914617d5d86caf651dab5e">QB_LOG_BLACKBOX</a>, <a class="code" href="qblog_8h.html#aaa6a5dea031c8dc88fbd6d38fd72dee5a05b84aca7698c88c32fed66d60821771">QB_LOG_CONF_ENABLED</a>, <a class="code" href="qbdefs_8h.html#aa53d378f26033634af24bd526090073e">QB_TRUE</a>);</div><div class="line">        }</div><div class="line">        <span class="keywordflow">if</span> (logfile) {</div><div class="line">                log_fd = <a name="a39"></a><a class="code" href="qblog_8h.html#a46abb926947f450d5d66255ffd13ef4f">qb_log_file_open</a>(logfile);</div><div class="line">                <a class="code" href="qblog_8h.html#a687531ff2f457ea5fe63dc91f74be783">qb_log_filter_ctl</a>(log_fd, <a class="code" href="qblog_8h.html#a0bcfbbefc6d73b62e72b135ff29fe03faaae48ba27a8dafc2163aaf9637d5ce2f">QB_LOG_FILTER_ADD</a>,</div><div class="line">                                  <a class="code" href="qblog_8h.html#aa23b899fd898c0c999357532f187fc0fa868c37c795816ee3d64143c4090afbb6">QB_LOG_FILTER_FILE</a>, __FILE__, _log_priority);</div><div class="line">                <a class="code" href="qblog_8h.html#a0e8cf298ff5fd224a16537b30a899df9">qb_log_format_set</a>(log_fd, <span class="stringliteral">&quot;[%N] %t %n() [%p] %b&quot;</span>);</div><div class="line">                <a class="code" href="qblog_8h.html#ab19da4babdb23834a25e5865016fb02d">qb_log_ctl</a>(log_fd, <a class="code" href="qblog_8h.html#aaa6a5dea031c8dc88fbd6d38fd72dee5a190db017221bea9bc7c3683ca0dcd023">QB_LOG_CONF_THREADED</a>, do_threaded);</div><div class="line">                <a class="code" href="qblog_8h.html#ab19da4babdb23834a25e5865016fb02d">qb_log_ctl</a>(log_fd, <a class="code" href="qblog_8h.html#aaa6a5dea031c8dc88fbd6d38fd72dee5a05b84aca7698c88c32fed66d60821771">QB_LOG_CONF_ENABLED</a>, <a class="code" href="qbdefs_8h.html#aa53d378f26033634af24bd526090073e">QB_TRUE</a>);</div><div class="line">        }</div><div class="line">        <span class="keywordflow">if</span> (do_threaded) {</div><div class="line">                <a name="a40"></a><a class="code" href="qblog_8h.html#aa93049df374b16e48e352327d02be156">qb_log_thread_start</a>();</div><div class="line">        }</div><div class="line">        <a class="code" href="qblog_8h.html#ac1dcd0ac044680eead32eae864928d71">qb_log</a>(LOG_DEBUG, <span class="stringliteral">&quot;hello&quot;</span>);</div><div class="line">        <a class="code" href="qblog_8h.html#ac1dcd0ac044680eead32eae864928d71">qb_log</a>(LOG_INFO, <span class="stringliteral">&quot;this is an info&quot;</span>);</div><div class="line">        <a class="code" href="qblog_8h.html#ac1dcd0ac044680eead32eae864928d71">qb_log</a>(LOG_NOTICE, <span class="stringliteral">&quot;hello - notice?&quot;</span>);</div><div class="line">        {</div><div class="line">                <span class="keywordtype">char</span> * str = NULL;</div><div class="line">                <a class="code" href="qblog_8h.html#ac1dcd0ac044680eead32eae864928d71">qb_log</a>(LOG_ERR,</div><div class="line">                       <span class="stringliteral">&quot;%s-%d-%s-%u&quot;</span>,</div><div class="line">                       NULL, 952, str, 56);</div><div class="line">        }</div><div class="line">        func_one();</div><div class="line">        func_two();</div><div class="line"></div><div class="line">        <span class="keywordflow">if</span> (!do_threaded) {</div><div class="line">                <span class="comment">/* Disabling syslog here will prevent the logs from</span></div><div class="line"><span class="comment">                 * getting flushed in qb_log_fini() if threaded</span></div><div class="line"><span class="comment">                 * logging is on.</span></div><div class="line"><span class="comment">                 */</span></div><div class="line">                <a class="code" href="qblog_8h.html#ab19da4babdb23834a25e5865016fb02d">qb_log_ctl</a>(<a class="code" href="qblog_8h.html#a461cac884ce0c9a80f069af15c6c046aa3811428d4ed722d87211411146622ad4">QB_LOG_SYSLOG</a>, <a class="code" href="qblog_8h.html#aaa6a5dea031c8dc88fbd6d38fd72dee5a05b84aca7698c88c32fed66d60821771">QB_LOG_CONF_ENABLED</a>, <a class="code" href="qbdefs_8h.html#a3adfa550658b3082a867536d5bcb87d8">QB_FALSE</a>);</div><div class="line"></div><div class="line">                <a class="code" href="qblog_8h.html#ac1dcd0ac044680eead32eae864928d71">qb_log</a>(LOG_WARNING, <span class="stringliteral">&quot;no syslog&quot;</span>);</div><div class="line">                <a class="code" href="qblog_8h.html#ac1dcd0ac044680eead32eae864928d71">qb_log</a>(LOG_ERR, <span class="stringliteral">&quot;no syslog&quot;</span>);</div><div class="line">        }</div><div class="line"></div><div class="line">        <span class="keywordflow">if</span> (do_blackbox) {</div><div class="line">                logfile = NULL;</div><div class="line">                logfile[5] = <span class="charliteral">&#39;a&#39;</span>;</div><div class="line">        } <span class="keywordflow">else</span> {</div><div class="line">                <a name="a41"></a><a class="code" href="qblog_8h.html#ad6b19c2d1c4de938418820a81d5d622c">qb_log_fini</a>();</div><div class="line">        }</div><div class="line">        <span class="keywordflow">return</span> 0;</div><div class="line">}</div></div><!-- fragment --> </div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>