Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Damn code dupplication
[simgrid.git] / src / xbt / log.c
index b532cb0..00d69f0 100644 (file)
 #include "xbt/error.h"
 #include "xbt/dynar.h"
 
-
-/** \defgroup XBT_log Logging support.
+/** \defgroup XBT_log Logging support
  *  \brief A generic logging facility in the spirit of log4j
  *
  *  This section describes the API to the log functions used 
  *  everywhere in this project.
      
-<h3>Overview</h3>
+\section log_overview Overview
      
 This is an adaptation of the log4c project, which is dead upstream, and
 which I was given the permission to fork under the LGPL licence by the
@@ -37,7 +36,7 @@ concepts work together to enable developers to log messages according to
 message type and priority, and to control at runtime how these messages are
 formatted and where they are reported.
 
-<h3>Category hierarchy</h3>
+\section log_cat Category hierarchy
 
 The first and foremost advantage of any logging API over plain printf()
 resides in its ability to disable certain log statements while allowing
@@ -71,7 +70,9 @@ definition.
 Typically, there will be a Category for each module and sub-module, so you
 can independently control logging for each module.
 
-<h3>Priority</h3>
+For a list of all existing categories, please refer to the \ref XBT_log_cats section.
+
+\section log_pri Priority
 
 A category may be assigned a threshold priorty. The set of priorites are
 defined by the \ref e_xbt_log_priority_t enum. All logging request under
@@ -110,7 +111,7 @@ equivalent to the shorter:
 
 <code>CWARN4(MyCat, "Values are: %d and '%s'", 5, "oops");</code>
 
-<h3>Default category</h3>
+\subsection log_subcat Using a default category
   
 If \ref XBT_LOG_NEW_DEFAULT_SUBCATEGORY(MyCat, Parent) or
 \ref XBT_LOG_NEW_DEFAULT_CATEGORY(MyCat) is used to create the
@@ -121,7 +122,7 @@ category, then the even shorter form can be used:
 Only one default category can be created per file, though multiple
 non-defaults can be created and used.
 
-<h3>Example</h3>
+\section log_example Example
 
 Here is a more complete example:
 
@@ -151,7 +152,7 @@ int main() {
 }
 \endverbatim
 
-<h3>Configuration</h3>
+\section log_conf Configuration
 Configuration is typically done during program initialization by invoking
 the xbt_log_control_set() method. The control string passed to it typically
 comes from the command line. Look at the documentation for that function for
@@ -162,7 +163,7 @@ Any SimGrid program can furthermore be configured at run time by passing a
 --surf-log are synonyms). You can provide several of those arguments to
 change the setting of several categories.
 
-<h3>Performance</h3>
+\section log_perf Performance
 
 Clever design insures efficiency. Except for the first invocation, a
 disabled logging request requires an a single comparison of a static
@@ -174,8 +175,12 @@ by the compiler. By setting it to gras_log_priority_infinite, all logging
 requests are statically disabled and cost nothing. Released executables
 might be compiled with
 \verbatim-DXBT_LOG_STATIC_THRESHOLD=gras_log_priority_infinite\endverbatim
-    
-<h3>Appenders</h3>
+
+Compiling with the \verbatim-DNLOG\endverbatim option disables all logging 
+requests at compilation time while the \verbatim-DNDEBUG\endverbatim disables 
+the requests of priority below INFO.
+\section log_app Appenders
 
 Each category has an optional appender. An appender is a pointer to a
 structure which starts with a pointer to a doAppend() function. DoAppend()
@@ -199,15 +204,13 @@ remote dedicated server, or other ones offering different output formats.
 This is on our TODO list for quite a while now, but your help would be
 welcome here.
 
-<h3>Misc and Caveats</h3>
-
-Do not use any of the macros that start with '_'.
-
-Log4J has a 'rolling file appender' which you can select with a run-time
-option and specify the max file size. This would be a nice default for
-non-kernel applications.
+\section log_misc Misc and Caveats
 
-Careful, category names are global variables.
+  - Do not use any of the macros that start with '_'.
+  - Log4J has a 'rolling file appender' which you can select with a run-time
+    option and specify the max file size. This would be a nice default for
+    non-kernel applications.
+  - Careful, category names are global variables.
 
 */
 
@@ -342,8 +345,9 @@ s_xbt_log_category_t _XBT_LOGV(XBT_LOG_ROOT_CAT) = {
   NULL, 0
 };
 
-XBT_LOG_NEW_SUBCATEGORY(xbt,XBT_LOG_ROOT_CAT,"All XBT categories (simgrid toolbox)");
-XBT_LOG_NEW_SUBCATEGORY(surf,XBT_LOG_ROOT_CAT,"All SURF categories");
+XBT_LOG_NEW_CATEGORY(xbt,"All XBT categories (simgrid toolbox)");
+XBT_LOG_NEW_CATEGORY(surf,"All SURF categories");
+XBT_LOG_NEW_CATEGORY(msg,"All MSG categories");
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(log,xbt,"Loggings from the logging mecanism itself");
 
 void xbt_log_init(int *argc,char **argv, const char *defaultlog) {
@@ -351,7 +355,7 @@ void xbt_log_init(int *argc,char **argv, const char *defaultlog) {
   char *opt;
   int found=0;
 
-  /** Set logs and init log submodule */
+  /* Set logs and init log submodule */
   for (i=1; i<*argc; i++) {
     if (!strncmp(argv[i],"--gras-log=",strlen("--gras-log=")) ||
        !strncmp(argv[i],"--surf-log=",strlen("--surf-log=")) ||