Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 874255f3b26b44feb57fbe38a7384518 > files > 204

gmerlin-0.4.1-2mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>gmerlin: Logging</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.9 -->
<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="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
</div>
<div class="contents">
<h1>Logging</h1>Global logging facilities.  
<a href="#_details">More...</a>
<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__log.html#g262b795751eb4bf4c1b81b72307d2ec1">bg_log</a>(level, domain,...)&nbsp;&nbsp;&nbsp;bg_log_translate(PACKAGE, level, domain, __VA_ARGS__)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Translate a message and send it to the logger.  <a href="#g262b795751eb4bf4c1b81b72307d2ec1"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__log.html#ge67a17c4e8711604c0787e662b3c854d">bg_log_level_t</a> { <br>
&nbsp;&nbsp;<a class="el" href="group__log.html#gge67a17c4e8711604c0787e662b3c854ddeb7d197674e880f661e82b491aa7b15">BG_LOG_DEBUG</a> =  1&lt;&lt;0, 
<br>
&nbsp;&nbsp;<a class="el" href="group__log.html#gge67a17c4e8711604c0787e662b3c854d60556643b21fecd47ea6ceb26a63e50b">BG_LOG_WARNING</a> =  1&lt;&lt;1, 
<br>
&nbsp;&nbsp;<a class="el" href="group__log.html#gge67a17c4e8711604c0787e662b3c854d80448b61867f6824a0939da7e5d7630d">BG_LOG_ERROR</a> =  1&lt;&lt;2, 
<br>
&nbsp;&nbsp;<a class="el" href="group__log.html#gge67a17c4e8711604c0787e662b3c854db0dfbf6e2385ed1547e47ed4103321a5">BG_LOG_INFO</a> =  1&lt;&lt;3
<br>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Log levels.  <a href="group__log.html#ge67a17c4e8711604c0787e662b3c854d">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__log.html#g01adf88f8b165f68db5679533213f865">bg_log_notranslate</a> (<a class="el" href="group__log.html#ge67a17c4e8711604c0787e662b3c854d">bg_log_level_t</a> level, const char *domain, const char *format,...) __attribute__((format(printf</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a message to the logger without translating it.  <a href="#g01adf88f8b165f68db5679533213f865"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__log.html#gefdc8a1e163211e33f67907108ec9738">bg_logs_notranslate</a> (<a class="el" href="group__log.html#ge67a17c4e8711604c0787e662b3c854d">bg_log_level_t</a> level, const char *domain, const char *str)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send a message (as complete string) to the logger without translating it.  <a href="#gefdc8a1e163211e33f67907108ec9738"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__log.html#g852dcd30b29445fc89041cb127180f9b">bg_log_translate</a> (const char *translation_domain, <a class="el" href="group__log.html#ge67a17c4e8711604c0787e662b3c854d">bg_log_level_t</a> level, const char *domain, const char *format,...) __attribute__((format(printf</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Translate a message and send it to the logger.  <a href="#g852dcd30b29445fc89041cb127180f9b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__log.html#ge444a158d998f37947db5841fd0818fa">bg_log_set_dest</a> (<a class="el" href="group__message__queues.html#g06c6bfc0f61ce4013b6d4117d299fa5a">bg_msg_queue_t</a> *q)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the log destination.  <a href="#ge444a158d998f37947db5841fd0818fa"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__log.html#g7045e91c07106b1066356bba23243fc3">bg_log_level_to_string</a> (<a class="el" href="group__log.html#ge67a17c4e8711604c0787e662b3c854d">bg_log_level_t</a> level)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Convert a log level to a human readable string.  <a href="#g7045e91c07106b1066356bba23243fc3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__log.html#gd02ccd392512ab079286a5c1110c8c72">bg_log_set_verbose</a> (int mask)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set verbosity mask.  <a href="#gd02ccd392512ab079286a5c1110c8c72"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__log.html#g206f510eb8e179b2ef361a493803c016">bg_log_last_error</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get last error message.  <a href="#g206f510eb8e179b2ef361a493803c016"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Global logging facilities. 
<p>
The logging mechanism is used for everything, which would be done with fprintf(stderr, ...) in simpler applications. It is the only mechanism, which used global variables, i.e. the functions <a class="el" href="group__log.html#ge444a158d998f37947db5841fd0818fa">bg_log_set_dest</a> and <a class="el" href="group__log.html#gd02ccd392512ab079286a5c1110c8c72">bg_log_set_verbose</a>. They should be called just once during application startup. The function <a class="el" href="group__log.html#g262b795751eb4bf4c1b81b72307d2ec1">bg_log</a> can, of course, be called from multiple threads simultaneously. <hr><h2>Define Documentation</h2>
<a class="anchor" name="g262b795751eb4bf4c1b81b72307d2ec1"></a><!-- doxytag: member="log.h::bg_log" ref="g262b795751eb4bf4c1b81b72307d2ec1" args="(level, domain,...)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define bg_log          </td>
          <td>(</td>
          <td class="paramtype">level,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">domain,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"> <em>...</em>&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;bg_log_translate(PACKAGE, level, domain, __VA_ARGS__)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Translate a message and send it to the logger. 
<p>

</div>
</div><p>
<hr><h2>Enumeration Type Documentation</h2>
<a class="anchor" name="ge67a17c4e8711604c0787e662b3c854d"></a><!-- doxytag: member="log.h::bg_log_level_t" ref="ge67a17c4e8711604c0787e662b3c854d" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="group__log.html#ge67a17c4e8711604c0787e662b3c854d">bg_log_level_t</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Log levels. 
<p>
These specify the type and severity of a message. They can also be ORed for a call to <a class="el" href="group__log.html#gd02ccd392512ab079286a5c1110c8c72">bg_log_set_verbose</a>. <dl compact><dt><b>Enumerator: </b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"><em><a class="anchor" name="gge67a17c4e8711604c0787e662b3c854ddeb7d197674e880f661e82b491aa7b15"></a><!-- doxytag: member="BG_LOG_DEBUG" ref="gge67a17c4e8711604c0787e662b3c854ddeb7d197674e880f661e82b491aa7b15" args="" -->BG_LOG_DEBUG</em>&nbsp;</td><td>
Only for programmers, useless for users. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gge67a17c4e8711604c0787e662b3c854d60556643b21fecd47ea6ceb26a63e50b"></a><!-- doxytag: member="BG_LOG_WARNING" ref="gge67a17c4e8711604c0787e662b3c854d60556643b21fecd47ea6ceb26a63e50b" args="" -->BG_LOG_WARNING</em>&nbsp;</td><td>
Something went wrong, but is not fatal. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gge67a17c4e8711604c0787e662b3c854d80448b61867f6824a0939da7e5d7630d"></a><!-- doxytag: member="BG_LOG_ERROR" ref="gge67a17c4e8711604c0787e662b3c854d80448b61867f6824a0939da7e5d7630d" args="" -->BG_LOG_ERROR</em>&nbsp;</td><td>
Something went wrong, cannot continue. </td></tr>
<tr><td valign="top"><em><a class="anchor" name="gge67a17c4e8711604c0787e662b3c854db0dfbf6e2385ed1547e47ed4103321a5"></a><!-- doxytag: member="BG_LOG_INFO" ref="gge67a17c4e8711604c0787e662b3c854db0dfbf6e2385ed1547e47ed4103321a5" args="" -->BG_LOG_INFO</em>&nbsp;</td><td>
Something interesting the user might want to know. </td></tr>
</table>
</dl>

</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="g01adf88f8b165f68db5679533213f865"></a><!-- doxytag: member="log.h::bg_log_notranslate" ref="g01adf88f8b165f68db5679533213f865" args="(bg_log_level_t level, const char *domain, const char *format,...) __attribute__((format(printf" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_log_notranslate           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__log.html#ge67a17c4e8711604c0787e662b3c854d">bg_log_level_t</a>&nbsp;</td>
          <td class="paramname"> <em>level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>domain</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Send a message to the logger without translating it. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>level</em>&nbsp;</td><td>Level </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>domain</em>&nbsp;</td><td>The name of the volume </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>Format like for printf</td></tr>
  </table>
</dl>
All other arguments must match the format string.<p>
This function either prints a message to stderr (if you didn't case <a class="el" href="group__log.html#ge444a158d998f37947db5841fd0818fa">bg_log_set_dest</a> and level is contained in the mask you passed to bg_log_set_verbose) or puts a message into the queue you passed to bg_log_set_dest. 
</div>
</div><p>
<a class="anchor" name="gefdc8a1e163211e33f67907108ec9738"></a><!-- doxytag: member="log.h::bg_logs_notranslate" ref="gefdc8a1e163211e33f67907108ec9738" args="(bg_log_level_t level, const char *domain, const char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void void bg_logs_notranslate           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__log.html#ge67a17c4e8711604c0787e662b3c854d">bg_log_level_t</a>&nbsp;</td>
          <td class="paramname"> <em>level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>domain</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Send a message (as complete string) to the logger without translating it. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>level</em>&nbsp;</td><td>Level </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>domain</em>&nbsp;</td><td>The name of the volume </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>str</em>&nbsp;</td><td>Message string</td></tr>
  </table>
</dl>
All other arguments must match the format string.<p>
This function either prints a message to stderr (if you didn't case <a class="el" href="group__log.html#ge444a158d998f37947db5841fd0818fa">bg_log_set_dest</a> and level is contained in the mask you passed to bg_log_set_verbose) or puts a message into the queue you passed to bg_log_set_dest. 
</div>
</div><p>
<a class="anchor" name="g852dcd30b29445fc89041cb127180f9b"></a><!-- doxytag: member="log.h::bg_log_translate" ref="g852dcd30b29445fc89041cb127180f9b" args="(const char *translation_domain, bg_log_level_t level, const char *domain, const char *format,...) __attribute__((format(printf" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_log_translate           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>translation_domain</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__log.html#ge67a17c4e8711604c0787e662b3c854d">bg_log_level_t</a>&nbsp;</td>
          <td class="paramname"> <em>level</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>domain</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Translate a message and send it to the logger. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>translation_domain</em>&nbsp;</td><td>Gettext domain (usually package name) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>level</em>&nbsp;</td><td>Level </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>domain</em>&nbsp;</td><td>The name of the volume </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>Format like for printf</td></tr>
  </table>
</dl>
All other arguments must match the format string.<p>
This function either prints a message to stderr (if you didn't case <a class="el" href="group__log.html#ge444a158d998f37947db5841fd0818fa">bg_log_set_dest</a> and level is contained in the mask you passed to bg_log_set_verbose) or puts a message into the queue you passed to bg_log_set_dest. 
</div>
</div><p>
<a class="anchor" name="ge444a158d998f37947db5841fd0818fa"></a><!-- doxytag: member="log.h::bg_log_set_dest" ref="ge444a158d998f37947db5841fd0818fa" args="(bg_msg_queue_t *q)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_log_set_dest           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__message__queues.html#g06c6bfc0f61ce4013b6d4117d299fa5a">bg_msg_queue_t</a> *&nbsp;</td>
          <td class="paramname"> <em>q</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the log destination. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>q</em>&nbsp;</td><td>Message queue</td></tr>
  </table>
</dl>
This sets a global message queue to which log messages will be sent. The format of the logging messages is simple: The message id is equal to the log level (see <a class="el" href="group__messages.html#ge92b3b5d1d0d1ee5e126e294de930a4a">bg_msg_get_id</a>). The first two arguments are strings for the domain and the actual message respectively (see <a class="el" href="group__messages.html#g72c9af047298b6aff882a3df112fb81f">bg_msg_get_arg_string</a>).<p>
Note, that logging will become asynchronous with this method. Also, single threaded applications always must remember to handle messages from the log queue after they did something critical. 
</div>
</div><p>
<a class="anchor" name="g7045e91c07106b1066356bba23243fc3"></a><!-- doxytag: member="log.h::bg_log_level_to_string" ref="g7045e91c07106b1066356bba23243fc3" args="(bg_log_level_t level)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char* bg_log_level_to_string           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__log.html#ge67a17c4e8711604c0787e662b3c854d">bg_log_level_t</a>&nbsp;</td>
          <td class="paramname"> <em>level</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Convert a log level to a human readable string. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>level</em>&nbsp;</td><td>Log level </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>A human readable string describing the log level </dd></dl>

</div>
</div><p>
<a class="anchor" name="gd02ccd392512ab079286a5c1110c8c72"></a><!-- doxytag: member="log.h::bg_log_set_verbose" ref="gd02ccd392512ab079286a5c1110c8c72" args="(int mask)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void bg_log_set_verbose           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>mask</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set verbosity mask. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>mask</em>&nbsp;</td><td>ORed log levels, which should be printed</td></tr>
  </table>
</dl>
Note, that this function is not thread save and has no effect if logging is done with a message queue. 
</div>
</div><p>
<a class="anchor" name="g206f510eb8e179b2ef361a493803c016"></a><!-- doxytag: member="log.h::bg_log_last_error" ref="g206f510eb8e179b2ef361a493803c016" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* bg_log_last_error           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get last error message. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The last error message, must be freed</dd></dl>
Use this only if you didn't set an log destination and you can make sure, that only your thread can trigger an error. 
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sat Aug 22 01:28:05 2009 for gmerlin by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>