aboutsummaryrefslogtreecommitdiff
path: root/libcontextprovider/doc/html/logging_8h-source.html
blob: 3355dc8817291fe783dc7eadfabd6a5e70e00eff (plain)
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>libcontextprovider: logging.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>File&nbsp;Members</span></a></li>
    </ul>
  </div>
<h1>logging.h</h1><a href="logging_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment"> * Copyright (C) 2008, 2009 Nokia Corporation.</span>
<a name="l00003"></a>00003 <span class="comment"> *</span>
<a name="l00004"></a>00004 <span class="comment"> * Contact: Marius Vollmer &lt;marius.vollmer@nokia.com&gt;</span>
<a name="l00005"></a>00005 <span class="comment"> *</span>
<a name="l00006"></a>00006 <span class="comment"> * This library is free software; you can redistribute it and/or</span>
<a name="l00007"></a>00007 <span class="comment"> * modify it under the terms of the GNU Lesser General Public License</span>
<a name="l00008"></a>00008 <span class="comment"> * version 2.1 as published by the Free Software Foundation.</span>
<a name="l00009"></a>00009 <span class="comment"> *</span>
<a name="l00010"></a>00010 <span class="comment"> * This library is distributed in the hope that it will be useful, but</span>
<a name="l00011"></a>00011 <span class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00012"></a>00012 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span>
<a name="l00013"></a>00013 <span class="comment"> * Lesser General Public License for more details.</span>
<a name="l00014"></a>00014 <span class="comment"> *</span>
<a name="l00015"></a>00015 <span class="comment"> * You should have received a copy of the GNU Lesser General Public</span>
<a name="l00016"></a>00016 <span class="comment"> * License along with this library; if not, write to the Free Software</span>
<a name="l00017"></a>00017 <span class="comment"> * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA</span>
<a name="l00018"></a>00018 <span class="comment"> * 02110-1301 USA</span>
<a name="l00019"></a>00019 <span class="comment"> *</span>
<a name="l00020"></a>00020 <span class="comment"> */</span>
<a name="l00021"></a>00021 
<a name="l00022"></a>00022 <span class="preprocessor">#ifndef LOGGING_H</span>
<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#define LOGGING_H</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span>
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;QIODevice&gt;</span>
<a name="l00026"></a>00026 <span class="preprocessor">#include &lt;QString&gt;</span>
<a name="l00027"></a>00027 <span class="preprocessor">#include &lt;QStringList&gt;</span>
<a name="l00028"></a>00028 <span class="preprocessor">#include &lt;QTextStream&gt;</span>
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;QBuffer&gt;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;QDebug&gt;</span>
<a name="l00031"></a>00031 
<a name="l00032"></a><a class="code" href="logging_8h.html#f4c5c4bc7df62d9c450a10142ada2f73">00032</a> <span class="preprocessor">#define CONTEXT_LOG_MSG_TYPE_TEST       1</span>
<a name="l00033"></a><a class="code" href="logging_8h.html#31a4dd1d3ccd43a859bc3b3c12de8a83">00033</a> <span class="preprocessor"></span><span class="preprocessor">#define CONTEXT_LOG_MSG_TYPE_DEBUG      2</span>
<a name="l00034"></a><a class="code" href="logging_8h.html#135d5a5bda27a9c86559a49deba43788">00034</a> <span class="preprocessor"></span><span class="preprocessor">#define CONTEXT_LOG_MSG_TYPE_WARNING    3</span>
<a name="l00035"></a><a class="code" href="logging_8h.html#5caff9634fb82d206523ecc35720802c">00035</a> <span class="preprocessor"></span><span class="preprocessor">#define CONTEXT_LOG_MSG_TYPE_CRITICAL   4</span>
<a name="l00036"></a>00036 <span class="preprocessor"></span>
<a name="l00037"></a>00037 <span class="preprocessor">#ifndef CONTEXT_LOG_MODULE_NAME</span>
<a name="l00038"></a><a class="code" href="logging_8h.html#a01ef6b4b7c61c0ae8d236d07bc69a62">00038</a> <span class="preprocessor"></span><span class="preprocessor">#define CONTEXT_LOG_MODULE_NAME "unknown"</span>
<a name="l00039"></a>00039 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00040"></a>00040 <span class="preprocessor"></span>
<a name="l00041"></a><a class="code" href="class_context_feature.html">00041</a> <span class="keyword">class </span><a class="code" href="class_context_feature.html" title="This class represents a &amp;quot;feature&amp;quot; in the logging framework/system.">ContextFeature</a>
<a name="l00042"></a>00042 {
<a name="l00043"></a>00043 <span class="keyword">public</span>:
<a name="l00044"></a>00044     <a class="code" href="class_context_feature.html#f1dc3766a0b0e21ba0a2f22a3102d09b" title="Constructor for a new feature.name is the feature name.">ContextFeature</a>(QString name);
<a name="l00045"></a>00045     QString <a class="code" href="class_context_feature.html#7c0d22d25f95a49373b195d8c55d1dc7" title="Returns the name of the feature.">getName</a>() <span class="keyword">const</span>;
<a name="l00046"></a>00046 
<a name="l00047"></a>00047 <span class="keyword">private</span>:
<a name="l00048"></a>00048     QString featureName;
<a name="l00049"></a>00049 };
<a name="l00050"></a>00050 
<a name="l00051"></a><a class="code" href="class_context_real_logger.html">00051</a> <span class="keyword">class </span><a class="code" href="class_context_real_logger.html" title="A real logging class.">ContextRealLogger</a> : <span class="keyword">public</span> QTextStream
<a name="l00052"></a>00052 {
<a name="l00053"></a>00053 <span class="keyword">public</span>:
<a name="l00054"></a>00054     <a class="code" href="class_context_real_logger.html#ee3a7c4dac60f4ec39165edf96466637" title="Constructor.">ContextRealLogger</a>(<span class="keywordtype">int</span> msgType, <span class="keyword">const</span> <span class="keywordtype">char</span> *module, <span class="keyword">const</span> <span class="keywordtype">char</span> *func, <span class="keyword">const</span> <span class="keywordtype">char</span> *file, <span class="keywordtype">int</span> line);
<a name="l00055"></a>00055     <a class="code" href="class_context_real_logger.html#d45b7a29bfd04c8678e2336964621b16" title="Destructor, prints end-of-line before going down.">~ContextRealLogger</a>();
<a name="l00056"></a>00056 
<a name="l00057"></a><a class="code" href="class_context_real_logger.html#dbf345abfa4979dad50fa64587d8b12b">00057</a>     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="class_context_real_logger.html#dbf345abfa4979dad50fa64587d8b12b" title="Test messages enabled at runtime.">showTest</a>; 
<a name="l00058"></a><a class="code" href="class_context_real_logger.html#149b4fa211448303b24806071a010e07">00058</a>     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="class_context_real_logger.html#149b4fa211448303b24806071a010e07" title="Debug messages enabled at runtime.">showDebug</a>; 
<a name="l00059"></a><a class="code" href="class_context_real_logger.html#cf5deaf1c001736730952794379c9fb2">00059</a>     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="class_context_real_logger.html#cf5deaf1c001736730952794379c9fb2" title="Warning messages enabled at runtime.">showWarning</a>; 
<a name="l00060"></a><a class="code" href="class_context_real_logger.html#7ffcc463d565ee93eadef3d95b388ac0">00060</a>     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="class_context_real_logger.html#7ffcc463d565ee93eadef3d95b388ac0" title="Critical messages enabled at runtime.">showCritical</a>; 
<a name="l00061"></a><a class="code" href="class_context_real_logger.html#ca946deec46d8e37f40b20a978d92ee8">00061</a>     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="class_context_real_logger.html#ca946deec46d8e37f40b20a978d92ee8" title="Class initialized/env vars parsed.">initialized</a>; 
<a name="l00062"></a><a class="code" href="class_context_real_logger.html#73b4d5021ffae90cbe7e9f914e307c45">00062</a>     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="class_context_real_logger.html#73b4d5021ffae90cbe7e9f914e307c45" title="Don&amp;#39;t print timestamps.">hideTimestamps</a>; 
<a name="l00063"></a><a class="code" href="class_context_real_logger.html#681ec8a8c8151a6e76de1b1b3aebe902">00063</a>     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="class_context_real_logger.html#681ec8a8c8151a6e76de1b1b3aebe902" title="Use simple colors for output (yellow for warnings, red for criticals).">useColor</a>; 
<a name="l00064"></a><a class="code" href="class_context_real_logger.html#261f1adeed09c748431d960c009280e2">00064</a>     <span class="keyword">static</span> <span class="keywordtype">char</span> *<a class="code" href="class_context_real_logger.html#261f1adeed09c748431d960c009280e2" title="Show messages only from the specified module.">showModule</a>; 
<a name="l00065"></a><a class="code" href="class_context_real_logger.html#29217f7733d4f5a8d73fa20dea9c2b8f">00065</a>     <span class="keyword">static</span> <span class="keywordtype">char</span> *<a class="code" href="class_context_real_logger.html#29217f7733d4f5a8d73fa20dea9c2b8f" title="Hide messages from the specified module.">hideModule</a>; 
<a name="l00066"></a><a class="code" href="class_context_real_logger.html#d3e0dc8c801098e35a385d712369b486">00066</a>     <span class="keyword">static</span> QStringList <a class="code" href="class_context_real_logger.html#d3e0dc8c801098e35a385d712369b486" title="Show messages with only the specified features.">showFeatures</a>; 
<a name="l00067"></a><a class="code" href="class_context_real_logger.html#1ad94fcbdca55015db01b33566642d61">00067</a>     <span class="keyword">static</span> QStringList <a class="code" href="class_context_real_logger.html#1ad94fcbdca55015db01b33566642d61" title="Hide messages with the specified features.">hideFeatures</a>; 
<a name="l00068"></a><a class="code" href="class_context_real_logger.html#11114df34f0dc06d4261a98db0c1a413">00068</a>     <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="class_context_real_logger.html#11114df34f0dc06d4261a98db0c1a413" title="Use vanilla (stripped-down) logging.">vanilla</a>; 
<a name="l00069"></a>00069 
<a name="l00070"></a>00070     <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="class_context_real_logger.html#e753079d62a886dd09c0576ad524c8f4" title="Initialize the class by checking the enviornment variables and setting the message...">initialize</a>();
<a name="l00071"></a>00071 
<a name="l00072"></a>00072     <a class="code" href="class_context_real_logger.html" title="A real logging class.">ContextRealLogger</a> &amp;<a class="code" href="class_context_real_logger.html#4a3d4d64fb340a1f4adb698106ee6d4b" title="Operator for appending features.">operator&lt;&lt; </a>(<span class="keyword">const</span> <a class="code" href="class_context_feature.html" title="This class represents a &amp;quot;feature&amp;quot; in the logging framework/system.">ContextFeature</a>&amp;);
<a name="l00073"></a>00073 
<a name="l00074"></a>00074 <span class="comment">//    ContextRealLogger &amp;operator&lt;&lt; (const char *str);</span>
<a name="l00075"></a>00075 
<a name="l00076"></a><a class="code" href="class_context_real_logger.html#83a9a63cef3753053154b86da8da52bb">00076</a>     <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <a class="code" href="class_context_real_logger.html" title="A real logging class.">ContextRealLogger</a> &amp;<a class="code" href="class_context_real_logger.html#4a3d4d64fb340a1f4adb698106ee6d4b" title="Operator for appending features.">operator&lt;&lt; </a>(<span class="keyword">const</span> T&amp; qSomething)
<a name="l00077"></a>00077         {
<a name="l00078"></a>00078             QString out;
<a name="l00079"></a>00079             QDebug(&amp;out) &lt;&lt; qSomething;
<a name="l00080"></a>00080             <a class="code" href="class_context_real_logger.html#4a3d4d64fb340a1f4adb698106ee6d4b" title="Operator for appending features.">QTextStream::operator&lt;&lt;</a>(out);
<a name="l00081"></a>00081             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
<a name="l00082"></a>00082         }
<a name="l00083"></a>00083 
<a name="l00084"></a>00084 <span class="keyword">private</span>:
<a name="l00085"></a>00085 
<a name="l00086"></a>00086     <span class="keywordtype">bool</span> shouldPrint();
<a name="l00087"></a>00087     <span class="keywordtype">void</span> appendFeatures();
<a name="l00088"></a>00088 
<a name="l00089"></a>00089     <span class="keywordtype">int</span> msgType; 
<a name="l00090"></a>00090     <span class="keyword">const</span> <span class="keywordtype">char</span>* moduleName; 
<a name="l00091"></a>00091     QString data; 
<a name="l00092"></a>00092     QStringList features;
<a name="l00093"></a>00093 };
<a name="l00094"></a>00094 
<a name="l00106"></a><a class="code" href="class_context_zero_logger.html">00106</a> <span class="keyword">class </span><a class="code" href="class_context_zero_logger.html" title="A fake logging class.">ContextZeroLogger</a>
<a name="l00107"></a>00107 {
<a name="l00108"></a>00108 <span class="keyword">public</span>:
<a name="l00110"></a><a class="code" href="class_context_zero_logger.html#95e0d40b90ed9c3f360067a3dadaa0c7">00110</a>     <span class="keyword">inline</span> <a class="code" href="class_context_zero_logger.html#95e0d40b90ed9c3f360067a3dadaa0c7" title="Constructor. Does nothing.">ContextZeroLogger</a>() {}
<a name="l00111"></a>00111 
<a name="l00112"></a>00112     <span class="comment">/* Stubby ops */</span>
<a name="l00113"></a><a class="code" href="class_context_zero_logger.html#ae39e44e016d29a07bd076470bc171bb">00113</a>     <span class="keyword">template</span> &lt;<span class="keyword">typename</span> T&gt; <span class="keyword">inline</span> <a class="code" href="class_context_zero_logger.html" title="A fake logging class.">ContextZeroLogger</a> &amp;<a class="code" href="class_context_zero_logger.html#ae39e44e016d29a07bd076470bc171bb" title="Does nothing.">operator&lt;&lt; </a>(<span class="keyword">const</span> T&amp;) { <span class="keywordflow">return</span> *<span class="keyword">this</span>;} 
<a name="l00114"></a>00114 };
<a name="l00115"></a>00115 
<a name="l00116"></a>00116 <span class="comment">/* Macro defs */</span>
<a name="l00117"></a>00117 
<a name="l00118"></a><a class="code" href="logging_8h.html#fbeb0b1d3a7070b195c5a6a5a062dc56">00118</a> <span class="preprocessor">#define contextFeature(name) (ContextFeature(name))</span>
<a name="l00119"></a>00119 <span class="preprocessor"></span>
<a name="l00120"></a>00120 <span class="preprocessor">#ifdef CONTEXT_LOG_HIDE_TEST</span>
<a name="l00121"></a>00121 <span class="preprocessor"></span><span class="preprocessor">#define contextTest() (ContextZeroLogger())</span>
<a name="l00122"></a>00122 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00123"></a><a class="code" href="logging_8h.html#bfb57c8a40821bf0caa9a29a8dfc47b7">00123</a> <span class="preprocessor"></span><span class="preprocessor">#define contextTest() (ContextRealLogger(CONTEXT_LOG_MSG_TYPE_TEST, CONTEXT_LOG_MODULE_NAME, __PRETTY_FUNCTION__, __FILE__, __LINE__))</span>
<a name="l00124"></a>00124 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00125"></a>00125 <span class="preprocessor"></span>
<a name="l00126"></a>00126 <span class="preprocessor">#ifdef CONTEXT_LOG_HIDE_DEBUG</span>
<a name="l00127"></a>00127 <span class="preprocessor"></span><span class="preprocessor">#define contextDebug() (ContextZeroLogger())</span>
<a name="l00128"></a>00128 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00129"></a><a class="code" href="logging_8h.html#d9c4e9fd2b26240900ff7c74cd7e8404">00129</a> <span class="preprocessor"></span><span class="preprocessor">#define contextDebug() (ContextRealLogger(CONTEXT_LOG_MSG_TYPE_DEBUG, CONTEXT_LOG_MODULE_NAME, __PRETTY_FUNCTION__, __FILE__, __LINE__))</span>
<a name="l00130"></a>00130 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00131"></a>00131 <span class="preprocessor"></span>
<a name="l00132"></a>00132 <span class="preprocessor">#ifdef CONTEXT_LOG_HIDE_WARNING</span>
<a name="l00133"></a>00133 <span class="preprocessor"></span><span class="preprocessor">#define contextWarning() (ContextZeroLogger())</span>
<a name="l00134"></a>00134 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00135"></a><a class="code" href="logging_8h.html#63433fe15ab356004ccdd4263b0910c0">00135</a> <span class="preprocessor"></span><span class="preprocessor">#define contextWarning() (ContextRealLogger(CONTEXT_LOG_MSG_TYPE_WARNING, CONTEXT_LOG_MODULE_NAME, __PRETTY_FUNCTION__, __FILE__, __LINE__))</span>
<a name="l00136"></a>00136 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00137"></a>00137 <span class="preprocessor"></span>
<a name="l00138"></a>00138 <span class="preprocessor">#ifdef CONTEXT_LOG_HIDE_CRITICAL</span>
<a name="l00139"></a>00139 <span class="preprocessor"></span><span class="preprocessor">#define contextCritical() (ContextZeroLogger())</span>
<a name="l00140"></a>00140 <span class="preprocessor"></span><span class="preprocessor">#else</span>
<a name="l00141"></a><a class="code" href="logging_8h.html#7f115b5076497bd3af236e8778940ea1">00141</a> <span class="preprocessor"></span><span class="preprocessor">#define contextCritical() (ContextRealLogger(CONTEXT_LOG_MSG_TYPE_CRITICAL, CONTEXT_LOG_MODULE_NAME, __PRETTY_FUNCTION__, __FILE__, __LINE__))</span>
<a name="l00142"></a>00142 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00143"></a>00143 <span class="preprocessor"></span>
<a name="l00144"></a>00144 <span class="preprocessor">#endif // LOGGING_H</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 23 08:58:39 2009 for libcontextprovider by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
</body>
</html>