Files
rtabmap/preview/pr-1492/api/latest/ULogger_8h_source.html
T

480 lines
68 KiB
HTML

<!-- HTML header for doxygen 1.9.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>RTAB-Map: utilite/include/rtabmap/utilite/ULogger.h Source File</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="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.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" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="custom.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">window.RTABMAP_DOC_ROOT="";</script>
<script type="text/javascript" src="../versions.js"></script>
<script type="text/javascript" src="version-switcher.js"></script>
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
<script type="text/javascript">DoxygenAwesomeDarkModeToggle.init();</script>
</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 id="projectrow">
<td id="projectalign">
<div id="projectname">RTAB-Map<span id="projectnumber">&#160;0.23.10</span>
</div>
<div id="projectbrief">Real-Time Appearance-Based Mapping</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('ULogger_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- 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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">ULogger.h</div></div>
</div><!--header-->
<div class="contents">
<a href="ULogger_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment">* utilite is a cross-platform library with</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment">* useful utilities for fast and small developing.</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment">* Copyright (C) 2010 Mathieu Labbe</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment">*</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment">* utilite is free library: you can redistribute it and/or modify</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment">* it under the terms of the GNU Lesser General Public License as published by</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment">* the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment">* (at your option) any later version.</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment">*</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment">* utilite is distributed in the hope that it will be useful,</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment">* but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment">* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment">* GNU Lesser General Public License for more details.</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment">*</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment">* You should have received a copy of the GNU Lesser General Public License</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment">* along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment">*/</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="preprocessor">#ifndef ULOGGER_H</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="preprocessor">#define ULOGGER_H</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="preprocessor">#include &quot;rtabmap/utilite/utilite_export.h&quot;</span> <span class="comment">// DLL export/import defines</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="preprocessor">#include &quot;rtabmap/utilite/UMutex.h&quot;</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="preprocessor">#include &quot;rtabmap/utilite/UDestroyer.h&quot;</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="preprocessor">#include &quot;rtabmap/utilite/UEvent.h&quot;</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span><span class="preprocessor">#include &quot;rtabmap/utilite/UException.h&quot;</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span><span class="preprocessor">#include &lt;time.h&gt;</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="preprocessor">#include &lt;vector&gt;</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#include &lt;map&gt;</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span><span class="preprocessor">#include &lt;set&gt;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="preprocessor">#include &lt;stdarg.h&gt;</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span><span class="comment">/*</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span><span class="comment"> * Convenient macros for logging...</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span><span class="comment"> */</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span><span class="preprocessor">#define ULOGGER_LOG(level, ...) ULogger::write(level, __FILE__, __LINE__, __FUNCTION__, __VA_ARGS__)</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span><span class="preprocessor">#define ULOGGER_DEBUG(...) ULOGGER_LOG(ULogger::kDebug, __VA_ARGS__)</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span><span class="preprocessor">#define ULOGGER_INFO(...) ULOGGER_LOG(ULogger::kInfo, __VA_ARGS__)</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span><span class="preprocessor">#define ULOGGER_WARN(...) ULOGGER_LOG(ULogger::kWarning, __VA_ARGS__)</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span><span class="preprocessor">#define ULOGGER_ERROR(...) ULOGGER_LOG(ULogger::kError, __VA_ARGS__)</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span><span class="preprocessor">#define ULOGGER_FATAL(...) ULOGGER_LOG(ULogger::kFatal, __VA_ARGS__) </span><span class="comment">// Throw UException</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"><a class="line" href="ULogger_8h.html#a9104cb408bf9019db2a2c4476835db4a"> 59</a></span><span class="preprocessor">#define UDEBUG(...) ULOGGER_DEBUG(__VA_ARGS__)</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"><a class="line" href="ULogger_8h.html#a5b63c9a1441181723754c0c6084231a8"> 60</a></span><span class="preprocessor">#define UINFO(...) ULOGGER_INFO(__VA_ARGS__)</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"><a class="line" href="ULogger_8h.html#ab5a739ad9340455e46eaa570f8223d9a"> 61</a></span><span class="preprocessor">#define UWARN(...) ULOGGER_WARN(__VA_ARGS__)</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="ULogger_8h.html#a1249ddbc4c9cc43be53048c08dda129b"> 62</a></span><span class="preprocessor">#define UERROR(...) ULOGGER_ERROR(__VA_ARGS__)</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="ULogger_8h.html#aabc10368a622911d56a4dd5a4b461385"> 63</a></span><span class="preprocessor">#define UFATAL(...) ULOGGER_FATAL(__VA_ARGS__) </span><span class="comment">// Throw UException</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment">// Throw UException</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"><a class="line" href="ULogger_8h.html#ab3436168e27946669bbd4c76e4c4007e"> 66</a></span><span class="preprocessor">#define UASSERT(condition) if(!(condition)) ULogger::write(ULogger::kFatal, __FILE__, __LINE__, __FUNCTION__, &quot;Condition (%s) not met!&quot;, #condition)</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="preprocessor">#define UASSERT_MSG(condition, msg_str) if(!(condition)) ULogger::write(ULogger::kFatal, __FILE__, __LINE__, __FUNCTION__, &quot;Condition (%s) not met! [%s]&quot;, #condition, msg_str)</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="foldopen" id="foldopen00121" data-start="{" data-end="};">
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"><a class="line" href="classULogEvent.html"> 121</a></span><span class="keyword">class </span><a class="code hl_class" href="classULogEvent.html">ULogEvent</a> : <span class="keyword">public</span> <a class="code hl_class" href="classUEvent.html">UEvent</a></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span>{</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="keyword">public</span>:</div>
<div class="foldopen" id="foldopen00129" data-start="{" data-end="}">
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"><a class="line" href="classULogEvent.html#aa403fb381a5bfd2986f08c10f0b1b24e"> 129</a></span> <a class="code hl_function" href="classULogEvent.html#aa403fb381a5bfd2986f08c10f0b1b24e">ULogEvent</a>(<span class="keyword">const</span> std::string &amp; msg, <span class="keywordtype">int</span> level) :</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <a class="code hl_class" href="classUEvent.html">UEvent</a>(level),</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> msg_(msg)</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> {}</div>
</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classULogEvent.html">~ULogEvent</a>() {}</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"><a class="line" href="classULogEvent.html#a460976b037ecf8357fc3fa3f613e5817"> 137</a></span> <span class="keyword">const</span> std::string &amp; <a class="code hl_function" href="classULogEvent.html#a460976b037ecf8357fc3fa3f613e5817">getMsg</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> msg_;}</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"><a class="line" href="classULogEvent.html#a70ec329f7f43a18805469302ffddc610"> 141</a></span> <span class="keyword">virtual</span> std::string <a class="code hl_function" href="classULogEvent.html#a70ec329f7f43a18805469302ffddc610">getClassName</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <span class="stringliteral">&quot;ULogEvent&quot;</span>;}</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> std::string msg_;</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span>};</div>
</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> </div>
<div class="foldopen" id="foldopen00229" data-start="{" data-end="};">
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"><a class="line" href="classULogger.html"> 229</a></span><span class="keyword">class </span>UTILITE_EXPORT <a class="code hl_class" href="classULogger.html">ULogger</a></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span>{</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> </div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"><a class="line" href="classULogger.html#ad18593456dbc3c4157ce986f55de6795"> 236</a></span> <span class="keyword">static</span> <span class="keyword">const</span> std::string <a class="code hl_variable" href="classULogger.html#ad18593456dbc3c4157ce986f55de6795">kDefaultLogFileName</a>;</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> </div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"><a class="line" href="classULogger.html#aab74fc95f6494a3a2137d9094fe100d8"> 244</a></span> <span class="keyword">enum</span> <a class="code hl_enumeration" href="classULogger.html#aab74fc95f6494a3a2137d9094fe100d8">Type</a>{kTypeNoLog, kTypeConsole, kTypeFile};</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> </div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"><a class="line" href="classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218"> 252</a></span> <span class="keyword">enum</span> <a class="code hl_enumeration" href="classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218">Level</a>{kDebug, kInfo, kWarning, kError, kFatal};</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> </div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"><a class="line" href="classULogger.html#a0fe73ce7c193ff399bca16b8d4d4cabb"> 265</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#a0fe73ce7c193ff399bca16b8d4d4cabb">setType</a>(<a class="code hl_enumeration" href="classULogger.html#aab74fc95f6494a3a2137d9094fe100d8">Type</a> type, <span class="keyword">const</span> std::string &amp;fileName = kDefaultLogFileName, <span class="keywordtype">bool</span> append = <span class="keyword">true</span>);</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="keyword">static</span> <a class="code hl_enumeration" href="classULogger.html#aab74fc95f6494a3a2137d9094fe100d8">Type</a> type() {<span class="keywordflow">return</span> type_;}</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> </div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="comment">// Setters</span></div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"><a class="line" href="classULogger.html#a2142b47257ecf1f2561afa8353eae411"> 273</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#a2142b47257ecf1f2561afa8353eae411">setPrintTime</a>(<span class="keywordtype">bool</span> printTime) {printTime_ = printTime;}</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> isPrintTime() {<span class="keywordflow">return</span> printTime_;}</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> </div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"><a class="line" href="classULogger.html#a4a97457a98a02f60580e6f3c93f83d7a"> 280</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#a4a97457a98a02f60580e6f3c93f83d7a">setPrintLevel</a>(<span class="keywordtype">bool</span> printLevel) {printLevel_ = printLevel;}</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> isPrintLevel() {<span class="keywordflow">return</span> printLevel_;}</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> </div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"><a class="line" href="classULogger.html#aa7cd59599601cdb214c6cb4df103dca0"> 287</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#aa7cd59599601cdb214c6cb4df103dca0">setPrintEndline</a>(<span class="keywordtype">bool</span> printEndline) {printEndline_ = printEndline;}</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> isPrintEndLine() {<span class="keywordflow">return</span> printEndline_;}</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> </div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"><a class="line" href="classULogger.html#a773d95354adfe1fd1296f3b2f09668d3"> 295</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#a773d95354adfe1fd1296f3b2f09668d3">setPrintColored</a>(<span class="keywordtype">bool</span> printColored) {printColored_ = printColored;}</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> isPrintColored() {<span class="keywordflow">return</span> printColored_;}</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> </div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"><a class="line" href="classULogger.html#af5a2e0f11770fcb457c1859c9f8b5ec3"> 302</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#af5a2e0f11770fcb457c1859c9f8b5ec3">setPrintWhere</a>(<span class="keywordtype">bool</span> printWhere) {printWhere_ = printWhere;}</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> isPrintWhere() {<span class="keywordflow">return</span> printWhere_;}</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> </div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"><a class="line" href="classULogger.html#a071b4484d0020a87760bbe282175724a"> 309</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#a071b4484d0020a87760bbe282175724a">setPrintThreadId</a>(<span class="keywordtype">bool</span> printThreadId) {printThreadID_ = printThreadId;}</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno"> 310</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> isPrintThreadId() {<span class="keywordflow">return</span> printThreadID_;}</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"> 311</span> </div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"><a class="line" href="classULogger.html#a2784b7a88339964e2a1c2b3436245bfc"> 316</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#a2784b7a88339964e2a1c2b3436245bfc">setPrintWhereFullPath</a>(<span class="keywordtype">bool</span> printWhereFullPath) {printWhereFullPath_ = printWhereFullPath;}</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> isPrintWhereFullPath() {<span class="keywordflow">return</span> printWhereFullPath_;}</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"> 318</span> </div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"><a class="line" href="classULogger.html#ab981daf077b8afbf49c7bd185aa3b273"> 329</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#ab981daf077b8afbf49c7bd185aa3b273">setBuffered</a>(<span class="keywordtype">bool</span> buffered);</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> isBuffered() {<span class="keywordflow">return</span> buffered_;}</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> </div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"><a class="line" href="classULogger.html#ad8589bdaabddc1e9a260b890b1cf312e"> 343</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#ad8589bdaabddc1e9a260b890b1cf312e">setLevel</a>(<a class="code hl_enumeration" href="classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218">ULogger::Level</a> level) {level_ = level;}</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> <span class="keyword">static</span> <a class="code hl_enumeration" href="classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218">ULogger::Level</a> level() {<span class="keywordflow">return</span> level_;}</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> </div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"><a class="line" href="classULogger.html#ac0705dc7bc5da07ce27351eb6519e942"> 352</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#ac0705dc7bc5da07ce27351eb6519e942">setEventLevel</a>(<a class="code hl_enumeration" href="classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218">ULogger::Level</a> eventSentLevel) {eventLevel_ = eventSentLevel;}</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> <span class="keyword">static</span> <a class="code hl_enumeration" href="classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218">ULogger::Level</a> eventLevel() {<span class="keywordflow">return</span> eventLevel_;}</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> </div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"><a class="line" href="classULogger.html#ada44d4afa869f1f9eab174a28c8a1acd"> 358</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#ada44d4afa869f1f9eab174a28c8a1acd">setTreadIdFilter</a>(<span class="keyword">const</span> std::set&lt;unsigned long&gt; &amp; ids) {threadIdFilter_ = ids;}</div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> <span class="keyword">static</span> <span class="keywordtype">void</span> setTreadIdFilter(<span class="keyword">const</span> std::vector&lt;std::string&gt; &amp; ids);</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> <span class="keyword">static</span> <span class="keyword">const</span> std::set&lt;unsigned long&gt; &amp; getTreadIdFilter() {<span class="keywordflow">return</span> threadIdFilter_;}</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> </div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"><a class="line" href="classULogger.html#a9e0fa0a0e32b03f89d08668e7c0b4664"> 366</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#a9e0fa0a0e32b03f89d08668e7c0b4664">registerCurrentThread</a>(<span class="keyword">const</span> std::string &amp; name);</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> <span class="keyword">static</span> <span class="keywordtype">void</span> unregisterCurrentThread();</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> <span class="keyword">static</span> std::map&lt;std::string, unsigned long&gt; getRegisteredThreads();</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> </div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"><a class="line" href="classULogger.html#a007b617547d616325e58003eb4352a19"> 373</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#a007b617547d616325e58003eb4352a19">reset</a>();</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> </div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"><a class="line" href="classULogger.html#a701ad6b99c9040cf3b5d47711e9f6d6a"> 379</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code hl_function" href="classULogger.html#a701ad6b99c9040cf3b5d47711e9f6d6a">flush</a>();</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> </div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span><span class="comment"> * Write a message to logger: use UDEBUG(), UINFO(), UWARN(), UERROR() or UFATAL() instead.</span></div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span><span class="comment"> * @param level the log level of this message</span></div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span><span class="comment"> * @param file the file path</span></div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span><span class="comment"> * @param line the line in the file</span></div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span><span class="comment"> * @param function the function name in which the message is logged</span></div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span><span class="comment"> * @param msg the message to write</span></div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span><span class="comment"> * @param ... the variable arguments</span></div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span><span class="comment"> */</span></div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> <span class="keyword">static</span> <span class="keywordtype">void</span> write(<a class="code hl_enumeration" href="classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218">ULogger::Level</a> level,</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * file,</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> <span class="keywordtype">int</span> line,</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *function,</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* msg,</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> ...)</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span><span class="preprocessor">#if defined(__GNUC__) || defined(__clang__)</span></div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> <span class="comment">// Let the compiler type-check every UDEBUG/UINFO/UWARN/UERROR</span></div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> <span class="comment">// format string against its arguments. Without this, a mismatch is</span></div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <span class="comment">// invisible until the line actually executes -- and since</span></div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> <span class="comment">// ULogger::write() returns early when the message is below the</span></div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> <span class="comment">// current log level, a bad format can sit latent for years and then</span></div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> <span class="comment">// segfault only for users running at a lower level. `msg` is the</span></div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> <span class="comment">// 5th parameter (no implicit `this`: the function is static) and</span></div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> <span class="comment">// the varargs start at 6.</span></div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> __attribute__((format(printf, 5, 6)))</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> ;</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> </div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"><a class="line" href="classULogger.html#a17e6d133cea7c2cbe5365e5f5f2216a9"> 414</a></span> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_function" href="classULogger.html#a17e6d133cea7c2cbe5365e5f5f2216a9">getTime</a>(std::string &amp;timeStr);</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> </div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span><span class="keyword">protected</span>:</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span><span class="comment"> * This method is used to have a reference on the </span></div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span><span class="comment"> * Logger. When no Logger exists, one is </span></div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span><span class="comment"> * created. There is only one instance in the application.</span></div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span><span class="comment"> * Must be protected by loggerMutex_.</span></div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span><span class="comment"> * See the Singleton pattern for further explanation.</span></div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span><span class="comment"> *</span></div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span><span class="comment"> * @return the reference on the Logger</span></div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span><span class="comment"> */</span></div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> <span class="keyword">static</span> <a class="code hl_class" href="classULogger.html">ULogger</a>* getInstance();</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> </div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span><span class="comment"> * Called only once in getInstance(). It can&#39;t be instanciated </span></div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span><span class="comment"> * by the user.</span></div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span><span class="comment"> *</span></div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span><span class="comment"> * @see getInstance()</span></div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span><span class="comment"> */</span></div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <a class="code hl_class" href="classULogger.html">ULogger</a>() {}</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> </div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span><span class="comment"> * Only called by a Destroyer.</span></div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span><span class="comment"> * @see Destroyer</span></div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span><span class="comment"> */</span></div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="keyword">virtual</span> <a class="code hl_class" href="classULogger.html">~ULogger</a>();</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> </div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span><span class="comment"> * Flush buffered messages</span></div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span><span class="comment"> */</span></div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> <span class="keywordtype">void</span> _flush();</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> </div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span><span class="comment"> * A Destroyer is used to remove a dynamicaly created </span></div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span><span class="comment"> * Singleton. It is friend here to have access to the </span></div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span><span class="comment"> * destructor.</span></div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span><span class="comment"> *</span></div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span><span class="comment"> * @see Destroyer</span></div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span><span class="comment"> */</span></div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code hl_class" href="classUDestroyer.html">UDestroyer</a>&lt;<a class="code hl_class" href="classULogger.html">ULogger</a>&gt;;</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> </div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span><span class="comment"> * The log file name.</span></div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span><span class="comment"> */</span></div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="keyword">static</span> std::string logFileName_;</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> </div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span><span class="comment"> * Default true, it doesn&#39;t overwrite the file.</span></div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span><span class="comment"> */</span></div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> append_;</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> </div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span><span class="comment"> * Create an instance according to type. See the Abstract factory </span></div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span><span class="comment"> * pattern for further explanation.</span></div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span><span class="comment"> * @see type_</span></div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span><span class="comment"> * @return the reference on the new logger</span></div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span><span class="comment"> */</span></div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> <span class="keyword">static</span> <a class="code hl_class" href="classULogger.html">ULogger</a>* createInstance();</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> </div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span><span class="comment"> * Write a message on the output with the format :</span></div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span><span class="comment"> * &quot;A message&quot;. Inherited class</span></div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span><span class="comment"> * must override this method to output the message. It </span></div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span><span class="comment"> * does nothing by default.</span></div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span><span class="comment"> * @param msg the message to write.</span></div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span><span class="comment"> * @param arg the variable arguments</span></div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span><span class="comment"> */</span></div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> _write(<span class="keyword">const</span> <span class="keywordtype">char</span>*, va_list) {} <span class="comment">// Do nothing by default</span></div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> <span class="keyword">virtual</span> <span class="keywordtype">void</span> _writeStr(<span class="keyword">const</span> <span class="keywordtype">char</span>*) {} <span class="comment">// Do nothing by default</span></div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> </div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span><span class="keyword">private</span>:</div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span><span class="comment"> * The Logger instance pointer.</span></div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span><span class="comment"> */</span></div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> <span class="keyword">static</span> <a class="code hl_class" href="classULogger.html">ULogger</a>* instance_;</div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> </div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span><span class="comment"> * The Logger&#39;s destroyer</span></div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span><span class="comment"> */</span></div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> <span class="keyword">static</span> <a class="code hl_class" href="classUDestroyer.html">UDestroyer&lt;ULogger&gt;</a> destroyer_;</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> </div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span><span class="comment"> * If the logger prints the time for each message. </span></div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span><span class="comment"> * Default is true.</span></div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span><span class="comment"> */</span></div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> printTime_;</div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> </div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span><span class="comment"> * If the logger prints the level for each message. </span></div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span><span class="comment"> * Default is true.</span></div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span><span class="comment"> */</span></div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> printLevel_;</div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> </div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span><span class="comment"> * If the logger prints the end line for each message. </span></div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span><span class="comment"> * Default is true.</span></div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span><span class="comment"> */</span></div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> printEndline_;</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> </div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span><span class="comment"> * If the logger prints text with color.</span></div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span><span class="comment"> * Default is true.</span></div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span><span class="comment"> */</span></div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> printColored_;</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> </div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span><span class="comment"> * If the logger prints where the message is logged (fileName::function():line).</span></div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span><span class="comment"> * Default is true.</span></div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span><span class="comment"> */</span></div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> printWhere_;</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> </div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span><span class="comment"> * If the logger prints the full path of the source file</span></div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span><span class="comment"> * where the message is written. Only works when</span></div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span><span class="comment"> * &quot;printWhere_&quot; is true.</span></div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span><span class="comment"> * Default is false.</span></div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span><span class="comment"> */</span></div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> printWhereFullPath_;</div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> </div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span><span class="comment"> * If the logger prints the thread ID.</span></div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span><span class="comment"> * Default is false.</span></div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span><span class="comment"> */</span></div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> printThreadID_;</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> </div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span><span class="comment"> * If the logger limit the size of the &quot;where&quot; path to</span></div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span><span class="comment"> * characters. If the path is over 8 characters, a &quot;~&quot;</span></div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span><span class="comment"> * is added. Only works when &quot;printWhereFullPath_&quot; is false.</span></div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span><span class="comment"> * Default is false.</span></div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span><span class="comment"> */</span></div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> limitWhereLength_;</div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> </div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span><span class="comment"> * The type of the logger.</span></div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span><span class="comment"> */</span></div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> <span class="keyword">static</span> Type type_;</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> </div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span><span class="comment"> * The severity of the log.</span></div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span><span class="comment"> */</span></div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> <span class="keyword">static</span> Level level_;</div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span> </div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span><span class="comment"> * The severity at which the message is also sent in a ULogEvent.</span></div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span><span class="comment"> */</span></div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> <span class="keyword">static</span> Level eventLevel_;</div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> </div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * levelName_[5];</div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> </div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span><span class="comment"> * Mutex used when accessing public functions.</span></div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span><span class="comment"> */</span></div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> <span class="keyword">static</span> <a class="code hl_class" href="classUMutex.html">UMutex</a> loggerMutex_;</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> </div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span> <span class="comment">/*</span></div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span><span class="comment"> * If the logger prints messages only when ULogger::flush() is called.</span></div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span><span class="comment"> * Default is false.</span></div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span><span class="comment"> */</span></div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> buffered_;</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> </div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> <span class="keyword">static</span> std::string bufferedMsgs_;</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> </div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> <span class="keyword">static</span> std::set&lt;unsigned long&gt; threadIdFilter_;</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> <span class="keyword">static</span> std::map&lt;std::string, unsigned long&gt; registeredThreads_;</div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span>};</div>
</div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> </div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span><span class="preprocessor">#endif </span><span class="comment">// ULOGGER_H</span></div>
<div class="ttc" id="aclassUDestroyer_html"><div class="ttname"><a href="classUDestroyer.html">UDestroyer</a></div><div class="ttdef"><b>Definition</b> <a href="UDestroyer_8h_source.html#l00032">UDestroyer.h:33</a></div></div>
<div class="ttc" id="aclassUEvent_html"><div class="ttname"><a href="classUEvent.html">UEvent</a></div><div class="ttdef"><b>Definition</b> <a href="UEvent_8h_source.html#l00057">UEvent.h:57</a></div></div>
<div class="ttc" id="aclassULogEvent_html"><div class="ttname"><a href="classULogEvent.html">ULogEvent</a></div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00121">ULogger.h:122</a></div></div>
<div class="ttc" id="aclassULogEvent_html_a460976b037ecf8357fc3fa3f613e5817"><div class="ttname"><a href="classULogEvent.html#a460976b037ecf8357fc3fa3f613e5817">ULogEvent::getMsg</a></div><div class="ttdeci">const std::string &amp; getMsg() const</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00137">ULogger.h:137</a></div></div>
<div class="ttc" id="aclassULogEvent_html_a70ec329f7f43a18805469302ffddc610"><div class="ttname"><a href="classULogEvent.html#a70ec329f7f43a18805469302ffddc610">ULogEvent::getClassName</a></div><div class="ttdeci">virtual std::string getClassName() const</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00141">ULogger.h:141</a></div></div>
<div class="ttc" id="aclassULogEvent_html_aa403fb381a5bfd2986f08c10f0b1b24e"><div class="ttname"><a href="classULogEvent.html#aa403fb381a5bfd2986f08c10f0b1b24e">ULogEvent::ULogEvent</a></div><div class="ttdeci">ULogEvent(const std::string &amp;msg, int level)</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00129">ULogger.h:129</a></div></div>
<div class="ttc" id="aclassULogger_html"><div class="ttname"><a href="classULogger.html">ULogger</a></div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00229">ULogger.h:230</a></div></div>
<div class="ttc" id="aclassULogger_html_a007b617547d616325e58003eb4352a19"><div class="ttname"><a href="classULogger.html#a007b617547d616325e58003eb4352a19">ULogger::reset</a></div><div class="ttdeci">static void reset()</div></div>
<div class="ttc" id="aclassULogger_html_a071b4484d0020a87760bbe282175724a"><div class="ttname"><a href="classULogger.html#a071b4484d0020a87760bbe282175724a">ULogger::setPrintThreadId</a></div><div class="ttdeci">static void setPrintThreadId(bool printThreadId)</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00309">ULogger.h:309</a></div></div>
<div class="ttc" id="aclassULogger_html_a0fe73ce7c193ff399bca16b8d4d4cabb"><div class="ttname"><a href="classULogger.html#a0fe73ce7c193ff399bca16b8d4d4cabb">ULogger::setType</a></div><div class="ttdeci">static void setType(Type type, const std::string &amp;fileName=kDefaultLogFileName, bool append=true)</div></div>
<div class="ttc" id="aclassULogger_html_a17e6d133cea7c2cbe5365e5f5f2216a9"><div class="ttname"><a href="classULogger.html#a17e6d133cea7c2cbe5365e5f5f2216a9">ULogger::getTime</a></div><div class="ttdeci">static int getTime(std::string &amp;timeStr)</div></div>
<div class="ttc" id="aclassULogger_html_a2142b47257ecf1f2561afa8353eae411"><div class="ttname"><a href="classULogger.html#a2142b47257ecf1f2561afa8353eae411">ULogger::setPrintTime</a></div><div class="ttdeci">static void setPrintTime(bool printTime)</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00273">ULogger.h:273</a></div></div>
<div class="ttc" id="aclassULogger_html_a2784b7a88339964e2a1c2b3436245bfc"><div class="ttname"><a href="classULogger.html#a2784b7a88339964e2a1c2b3436245bfc">ULogger::setPrintWhereFullPath</a></div><div class="ttdeci">static void setPrintWhereFullPath(bool printWhereFullPath)</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00316">ULogger.h:316</a></div></div>
<div class="ttc" id="aclassULogger_html_a4a97457a98a02f60580e6f3c93f83d7a"><div class="ttname"><a href="classULogger.html#a4a97457a98a02f60580e6f3c93f83d7a">ULogger::setPrintLevel</a></div><div class="ttdeci">static void setPrintLevel(bool printLevel)</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00280">ULogger.h:280</a></div></div>
<div class="ttc" id="aclassULogger_html_a4f71cd491aa60029eb6ea4bf79c06218"><div class="ttname"><a href="classULogger.html#a4f71cd491aa60029eb6ea4bf79c06218">ULogger::Level</a></div><div class="ttdeci">Level</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00252">ULogger.h:252</a></div></div>
<div class="ttc" id="aclassULogger_html_a701ad6b99c9040cf3b5d47711e9f6d6a"><div class="ttname"><a href="classULogger.html#a701ad6b99c9040cf3b5d47711e9f6d6a">ULogger::flush</a></div><div class="ttdeci">static void flush()</div></div>
<div class="ttc" id="aclassULogger_html_a773d95354adfe1fd1296f3b2f09668d3"><div class="ttname"><a href="classULogger.html#a773d95354adfe1fd1296f3b2f09668d3">ULogger::setPrintColored</a></div><div class="ttdeci">static void setPrintColored(bool printColored)</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00295">ULogger.h:295</a></div></div>
<div class="ttc" id="aclassULogger_html_a9e0fa0a0e32b03f89d08668e7c0b4664"><div class="ttname"><a href="classULogger.html#a9e0fa0a0e32b03f89d08668e7c0b4664">ULogger::registerCurrentThread</a></div><div class="ttdeci">static void registerCurrentThread(const std::string &amp;name)</div></div>
<div class="ttc" id="aclassULogger_html_aa7cd59599601cdb214c6cb4df103dca0"><div class="ttname"><a href="classULogger.html#aa7cd59599601cdb214c6cb4df103dca0">ULogger::setPrintEndline</a></div><div class="ttdeci">static void setPrintEndline(bool printEndline)</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00287">ULogger.h:287</a></div></div>
<div class="ttc" id="aclassULogger_html_aab74fc95f6494a3a2137d9094fe100d8"><div class="ttname"><a href="classULogger.html#aab74fc95f6494a3a2137d9094fe100d8">ULogger::Type</a></div><div class="ttdeci">Type</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00244">ULogger.h:244</a></div></div>
<div class="ttc" id="aclassULogger_html_ab981daf077b8afbf49c7bd185aa3b273"><div class="ttname"><a href="classULogger.html#ab981daf077b8afbf49c7bd185aa3b273">ULogger::setBuffered</a></div><div class="ttdeci">static void setBuffered(bool buffered)</div></div>
<div class="ttc" id="aclassULogger_html_ac0705dc7bc5da07ce27351eb6519e942"><div class="ttname"><a href="classULogger.html#ac0705dc7bc5da07ce27351eb6519e942">ULogger::setEventLevel</a></div><div class="ttdeci">static void setEventLevel(ULogger::Level eventSentLevel)</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00352">ULogger.h:352</a></div></div>
<div class="ttc" id="aclassULogger_html_ad18593456dbc3c4157ce986f55de6795"><div class="ttname"><a href="classULogger.html#ad18593456dbc3c4157ce986f55de6795">ULogger::kDefaultLogFileName</a></div><div class="ttdeci">static const std::string kDefaultLogFileName</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00236">ULogger.h:236</a></div></div>
<div class="ttc" id="aclassULogger_html_ad8589bdaabddc1e9a260b890b1cf312e"><div class="ttname"><a href="classULogger.html#ad8589bdaabddc1e9a260b890b1cf312e">ULogger::setLevel</a></div><div class="ttdeci">static void setLevel(ULogger::Level level)</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00343">ULogger.h:343</a></div></div>
<div class="ttc" id="aclassULogger_html_ada44d4afa869f1f9eab174a28c8a1acd"><div class="ttname"><a href="classULogger.html#ada44d4afa869f1f9eab174a28c8a1acd">ULogger::setTreadIdFilter</a></div><div class="ttdeci">static void setTreadIdFilter(const std::set&lt; unsigned long &gt; &amp;ids)</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00358">ULogger.h:358</a></div></div>
<div class="ttc" id="aclassULogger_html_af5a2e0f11770fcb457c1859c9f8b5ec3"><div class="ttname"><a href="classULogger.html#af5a2e0f11770fcb457c1859c9f8b5ec3">ULogger::setPrintWhere</a></div><div class="ttdeci">static void setPrintWhere(bool printWhere)</div><div class="ttdef"><b>Definition</b> <a href="ULogger_8h_source.html#l00302">ULogger.h:302</a></div></div>
<div class="ttc" id="aclassUMutex_html"><div class="ttname"><a href="classUMutex.html">UMutex</a></div><div class="ttdef"><b>Definition</b> <a href="UMutex_8h_source.html#l00054">UMutex.h:55</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_7c77c469ef71e5893c1567cf621a9d83.html">utilite</a></li><li class="navelem"><a class="el" href="dir_5807fd1f37f21884b665e4f5337b2441.html">include</a></li><li class="navelem"><a class="el" href="dir_d5b9494e18cb3ada3ef427a965bb34ab.html">rtabmap</a></li><li class="navelem"><a class="el" href="dir_85e098119c0e838040cd00f42e29c3c2.html">utilite</a></li><li class="navelem"><a class="el" href="ULogger_8h.html">ULogger.h</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
</ul>
</div>
</body>
</html>