aboutsummaryrefslogtreecommitdiff
path: root/cvs/cvsweb.cgi/code/nel/doc/logging.dxt.diff?r1=1.4&r2=1.5&sortby=date
blob: 03e1d9f3bfd3be83db609d7c123284edc93cda38 (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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML>
<HEAD><style>		A { color:black }</style>
<!-- hennerik CVSweb $Revision: 1.93 $ -->
<TITLE>code/nel/doc/logging.dxt - diff - 1.5</TITLE></HEAD>
<BODY BGCOLOR="#eeeeee">
<table width="100%" border=0 cellspacing=0 cellpadding=1 bgcolor="#aaaaaa"><tr valign=bottom><td><a href="/cvs/cvsweb.cgi/code/nel/doc/logging.dxt?sortby=date"><IMG SRC="/inc/img/picto-up.gif" ALT="[BACK]" BORDER="0" WIDTH="14" HEIGHT="13"></a> <b>Return to <A HREF="/cvs/cvsweb.cgi/code/nel/doc/logging.dxt?sortby=date">logging.dxt</A>
 CVS log</b> <IMG SRC="/inc/img/picto-news.gif" ALT="[TXT]" BORDER="0" WIDTH="13" HEIGHT="15"></td><td align=right><IMG SRC="/inc/img/picto-dir.gif" ALT="[DIR]" BORDER="0" WIDTH="15" HEIGHT="13"> <b>Up to  <a href="/cvs/cvsweb.cgi/?sortby=date">Nevrax</a> / <a href="/cvs/cvsweb.cgi/code/?sortby=date">code</a> / <a href="/cvs/cvsweb.cgi/code/nel/?sortby=date">nel</a> / <a href="/cvs/cvsweb.cgi/code/nel/doc/?sortby=date">doc</a></b></td></tr></table><h3 align=center>Diff for /code/nel/doc/logging.dxt between version 1.4 and 1.5</h3>
<table border=0 cellspacing=0 cellpadding=0 width="100%">
<tr bgcolor="#ffffff">
<th width="50%" valign=TOP>version 1.4, 2001/02/05 16:11:36</th>
<th width="50%" valign=TOP>version 1.5, 2001/05/04 09:58:23</th>
<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 1</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 1</b>&nbsp;<font size=-1></font></td></tr></table></td>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;/**</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;/**</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; \page log_howto How to log information ?</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; \page log_howto How to log information (for debugging purpose) ?</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; \author Olivier Cado</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; \author Olivier Cado</font></td></tr>
<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; \date Updated May 4 2000</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; This document explains how to log some information (into the screen, into a file or to a logging server), e.g. in order to debug your code.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; This document explains how to log some information (into the screen, into a file or to a logging server), e.g. in order to debug your code.</font></td></tr>
<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp; You need to include the following header files : &quot;nel/misc/debug.h&quot; &quot;nel/misc/log.h&quot;.</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; \subsection init_log Initialization</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;\section basic_debug Basic usage of the debugging system</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;The debugging sytem allows to log information at various levels. Include the header file &quot;nel/misc/debug.h&quot;.</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; In the initialization of your service (see NLNET::IService), attach some displayers to the global NLMISC::CLog objects</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;The main functionalities are offered by the macros nldebug, nlinfo, nlwarning and also nlerror and nlassert, and by their variant forms (see debug.h). They allow to display strings, with open arguments, using the &quot;printf&quot; syntax. In the default behaviour, the text passed to nldebug is displayed into stdout in NL_DEBUG mode, but not in NL_RELEASE. The logged texts are also written into a file called &quot;log.log&quot; in the working directory. These macros print the strings with an information header.</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; \e ErrorLog, \e WarningLog, \e InfoLog, \e DebugLog and \e AssertLog.</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; NLMISC::CStdDisplayer is for the screen (and VC++ debug window). It is attached by default to all of the five logger objects mentionned above.</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; NLMISC::CFileDisplayer is for a file.</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; NLMISC::CMsgBoxDisplayer is for a message box.</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; NLNET::CNetDisplayer is for a logging server (see CLogService in the server documentation)</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; If your program is not a service (i.e. it is not inherited from NLNET::IService),</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; don't forget to call \b NLMISC::InitDebug() at the beginning of your program, otherwise</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; the logging functions won't work.</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; Example :</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; Example :</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; \code</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; \code</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; sint32 age = -2;</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; NLMISC::InitDebug(); // if your program does not inherit from NLNET::IService</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; nldebug( &quot;Toto is %d years old&quot;, age );</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; NLNET::CNetDisplayer *nd = new CNetDisplayer(); // the address of the Logging Server is automatically retrieved using the Naming Service</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; if ( age &lt; 0 )</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; if ( nd-&gt;connected() ) // this line is optional: here we don't want the displayer to attempt other connections if the first one failed</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; {</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; {</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; NLMISC::DebugLog.addDisplayer( nd );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; nlerror( &quot;Invalid age for toto : %d&quot;, age );</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; // the program will not come here because nlerror throws an exception to exit</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; }</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; }</font></td></tr>
<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; STDOUT (logger thread_id file line: debug_string):</font></td></tr>
<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; DBG 1234 myfile.cpp 10: Toto is -2 years old</font></td></tr>
<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; ERR 1234 myfile.cpp 13: Invalid age for toto : -2</font></td></tr>
<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; Abort</font></td></tr>
<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; FILE OUTPUT (date time logger debug_string):</font></td></tr>
<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; 01/04/11 18:24:50 DBG: Toto is -2 years old</font></td></tr>
<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp; 01/04/11 18:24:50 ERR: Invalid age for toto : -2</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; \endcode</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; \endcode</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; \subsection use_log Logging information</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;Because NeL allows to create multithreaded programs, these macros use mutual exclusions (mutex) to ensure no data is corrupted and the displayed text not interlaced. </font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; In your code, use the macros : &nbsp;\e nlerror, \e nlwarning, \e nlinfo, \e nldebug with a variable number of arguments.</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; You have to include the header &quot;nel/misc/debug.h&quot;.</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; Example :</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;\section adv_log Advanced usage of the logging system</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;You may want to customize the logging system directly, for your own needs. Include &quot;nel/misc/log.h&quot;.</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;\subsection init_log Initialization</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;If your program is not a &quot;service&quot; in the NeL terms (i.e. if it is not built on NLNET::IService),</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;first call createDebug() to create the basic global loggers \e ErrorLog, \e WarningLog, \e InfoLog, \e DebugLog and \e AssertLog (the ones that are used by the nlerror, nlwarning, nlinfo, nldebug and nlassert macros).</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;Then, you can attach some displayers to the global loggers (NLMISC::CLog objects).</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;- NLMISC::CStdDisplayer is for stdout (the console, the VC++ output window...). It is attached by default to all of the five logger objects mentionned above.</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;- NLMISC::CFileDisplayer is for a file.</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;- NLMISC::CMsgBoxDisplayer is for a message box.</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;- NLNET::CNetDisplayer is for a logging server (see CLogService in the nelns documentation).</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;- You can can create your own displayer, in order to print the logged text onto a new target (for example, see the class CChatDisplayer in Snowballs 0.2) or to customize the filter on the header.</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;Example (we assume CNetDisplayer allows to log via the network):</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; \code</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; \code</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; nldebug( &quot;Toto is %d years old&quot;, age );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; if ( age &lt; 0 )</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; createDebug(); // automatically done in a &quot;service&quot;</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; NLNET::CNetDisplayer *nd = new CNetDisplayer(); // the address of the Logging Server is automatically retrieved using the Naming Service</font></td></tr>
<tr><td bgcolor="#99cc99">&nbsp;</td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; if ( nd-&gt;connected() ) // this line is optional: here we don't want the displayer to attempt other connections if the first one failed</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; {</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; {</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; nlerror( &quot;Invalid age for toto : %d&quot;, age );</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; NLMISC::DebugLog.addDisplayer( nd );</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; &nbsp; &nbsp; // the program counter will never be here because nlerror throw an exception to exit</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; }</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; }</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; \endcode</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; \endcode</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; - How to log a string without repeating the header ?</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; \subsection use_log Logging information</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; The macros nldebug() and nlerror() call some methods of NLMISC::CLog, including displayNL().</font></td><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; How to log a string without repeating the header ? Use the methods of NLMISC::CLog.</font></td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; It prints a string with an information header.</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td bgcolor="#99ff99"><font face="Helvetica,Arial" size="-1">&nbsp; If you don't want to print the header, use the others methods of NLMISC::CLog.</font></td><td bgcolor="#99cc99">&nbsp;</td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; Example :</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; Example :</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; \code</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; \code</font></td></tr>
<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 62</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 76</b>&nbsp;<font size=-1></font></td></tr></table></td>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; }</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; }</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; \endcode</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; \endcode</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td></tr>
<tr><td bgcolor="#cccccc">&nbsp;</td><td bgcolor="#ccccff"><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; \subsection network_transfers Analysing network transfers</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; \subsection network_transfers Analysing network transfers</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; NLNET::NetLog (declared in &quot;nel/net/nel_log.h&quot;) is a special logger that allows to send output and input logs to a logging server.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; NLNET::NetLog (declared in &quot;nel/net/nel_log.h&quot;) is a special logger that allows to send output and input logs to a logging server.</font></td></tr>
<tr bgcolor="#dddddd"><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 70</b>&nbsp;<font size=-1></font></td></tr></table></td><td width="50%"><table width="100%" border=1 cellpadding=5><tr><td><b>Line 86</b>&nbsp;<font size=-1></font></td></tr></table></td>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp; By default, all services (see NLNET::IService) send this kind of logs if they find a logging server.</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp; By default, all services (see NLNET::IService) send this kind of logs if they find a logging server.</font></td></tr>
<tr><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td><td><font face="Helvetica,Arial" size="-1">&nbsp;</font></td></tr>
<tr><td bgcolor="#ff9999"><font face="Helvetica,Arial" size="-1">&nbsp;*/</font></td><td bgcolor="#cccccc">&nbsp;</td></tr>
</table><br><hr noshade width="100%">
<table border=0><tr><td><table border=1><tr><td>Legend:<br><table border=0 cellspacing=0 cellpadding=1>
<tr><td align=center bgcolor="#ff9999">Removed from v.1.4</td><td bgcolor="#cccccc">&nbsp;</td></tr><tr bgcolor="#99ff99"><td align=center colspan=2>changed lines</td></tr><tr><td bgcolor="#cccccc">&nbsp;</td><td align=center bgcolor="#ccccff">Added in v.1.5</td></tr></table></td></tr></table>
<td><FORM METHOD="GET" ACTION="/cvs/cvsweb.cgi/code/nel/doc/logging.dxt.diff">
<INPUT TYPE=HIDDEN NAME="sortby" VALUE="date">
<INPUT TYPE=HIDDEN NAME="r1" VALUE="1.4">
<INPUT TYPE=HIDDEN NAME="r2" VALUE="1.5">
<SELECT NAME="f" onchange="submit()">
<OPTION VALUE=h SELECTED>Colored Diff<OPTION VALUE=H>Long Colored Diff<OPTION VALUE=u>Unidiff<OPTION VALUE=c>Context Diff<OPTION VALUE=s>Side by Side</SELECT><INPUT TYPE=SUBMIT VALUE="Show">
</FORM>
</td></tr></table>