/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
+/** @addtogroup XBT_log
+ * @brief A generic logging facility in the spirit of log4j (grounding feature)
+ *
+ *
+ */
+
+/** \defgroup XBT_log_cats Existing log categories
+ * \ingroup XBT_log
+ * \brief (automatically extracted)
+ *
+ * This is the list of all existing log categories in SimGrid.
+ * This list was automatically extracted from the source code by
+ * the src/xbt_log_extract_hierarchy utility.
+ *
+ * You can thus be certain that it is uptodate, but it may somehow
+ * lack a final manual touch.
+ * Anyway, nothing's perfect ;)
+ */
+
/* XBT_LOG_MAYDAY: define this to replace the logging facilities with basic
printf function. Useful to debug the logging facilities themselves */
#undef XBT_LOG_MAYDAY
#include "xbt/misc.h"
#include <stdarg.h>
-
+SG_BEGIN_DECL()
/**\brief Log priorities
* \ingroup XBT_log
*
* \param catName name of new category
* \param parent father of the new category in the tree
* \param desc string describing the purpose of this category
+ * \hideinitializer
*
* Defines a new subcategory of the parent.
*/
* \ingroup XBT_log
* \param catName name of new category
* \param desc string describing the purpose of this category
+ * \hideinitializer
*
* Creates a new subcategory of the root category.
*/
/**
* \ingroup XBT_log
* \param cname name of the cat
+ * \hideinitializer
*
* Indicates which category is the default one.
*/
# define XBT_LOG_DEFAULT_CATEGORY(cname)
#else
# define XBT_LOG_DEFAULT_CATEGORY(cname) \
- static xbt_log_category_t _XBT_LOGV(default) = &_XBT_LOGV(cname)
+ static xbt_log_category_t _XBT_LOGV(default) _XBT_GNUC_UNUSED = &_XBT_LOGV(cname)
#endif
/**
* \ingroup XBT_log
* \param cname name of the cat
* \param desc string describing the purpose of this category
+ * \hideinitializer
*
* Creates a new subcategory of the root category and makes it the default
* (used by macros that don't explicitly specify a category).
* \param cname name of the cat
* \param parent name of the parent
* \param desc string describing the purpose of this category
+ * \hideinitializer
*
* Creates a new subcategory of the parent category and makes it the default
* (used by macros that don't explicitly specify a category).
/**
* \ingroup XBT_log
* \param cname name of the cat
+ * \hideinitializer
*
* Indicates that a category you'll use in this file (to get subcategories of it,
* for example) really lives in another file.
#define XBT_LOG_EXTERNAL_CATEGORY(cname) \
extern s_xbt_log_category_t _XBT_LOGV(cname)
+/**
+ * \ingroup XBT_log
+ * \param cname name of the cat
+ * \hideinitializer
+ *
+ * Indicates that the default category of this file was declared in another file.
+ */
+
+#define XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(cname) \
+ XBT_LOG_EXTERNAL_CATEGORY(cname);\
+ XBT_LOG_DEFAULT_CATEGORY(cname)
+
/* Functions you may call */
extern void xbt_log_control_set(const char* cs);
* \ingroup XBT_log
* \param catName name of the category
* \param priority minimal priority to be enabled to return true
+ * \hideinitializer
*
* Returns true if the given priority is enabled for the category.
* If you have expensive expressions that are computed outside of the log
#define _XBT_LOG_PRE(catv, priority) do { \
if (_XBT_LOG_ISENABLEDV(catv, priority)) { \
s_xbt_log_event_t _log_ev = \
- {&(catv),priority,__FILE__,_XBT_GNUC_FUNCTION,__LINE__}; \
+ {&(catv),priority,__FILE__,_XBT_FUNCTION,__LINE__}; \
_xbt_log_event_log(&_log_ev
#define _XBT_LOG_POST \
#define CINFO4(c, f,a1,a2,a3,a4) CLOG4(c, xbt_log_priority_info, f,a1,a2,a3,a4)
#define CINFO5(c, f,a1,a2,a3,a4,a5) CLOG5(c, xbt_log_priority_info, f,a1,a2,a3,a4,a5)
#define CINFO6(c, f,a1,a2,a3,a4,a5,a6) CLOG6(c, xbt_log_priority_info, f,a1,a2,a3,a4,a5,a6)
+#define CINFO7(c, f,a1,a2,a3,a4,a5,a6,a7) CLOG7(c, xbt_log_priority_info, f,a1,a2,a3,a4,a5,a6,a7)
+#define CINFO8(c, f,a1,a2,a3,a4,a5,a6,a7,a8) CLOG8(c, xbt_log_priority_info, f,a1,a2,a3,a4,a5,a6,a7,a8)
#define CWARN0(c, f) CLOG0(c, xbt_log_priority_warning, f)
#define CWARN1(c, f,a1) CLOG1(c, xbt_log_priority_warning, f,a1)
#define INFO4(f,a1,a2,a3,a4) LOG4(xbt_log_priority_info, f,a1,a2,a3,a4)
#define INFO5(f,a1,a2,a3,a4,a5) LOG5(xbt_log_priority_info, f,a1,a2,a3,a4,a5)
#define INFO6(f,a1,a2,a3,a4,a5,a6) LOG6(xbt_log_priority_info, f,a1,a2,a3,a4,a5,a6)
+#define INFO7(f,a1,a2,a3,a4,a5,a6,a7) LOG7(xbt_log_priority_info, f,a1,a2,a3,a4,a5,a6,a7)
+#define INFO8(f,a1,a2,a3,a4,a5,a6,a7,a8) LOG8(xbt_log_priority_info, f,a1,a2,a3,a4,a5,a6,a7,a8)
/* @} */
/** \name WARN
#define CRITICAL6(f,a1,a2,a3,a4,a5,a6) LOG6(xbt_log_priority_critical, f,a1,a2,a3,a4,a5,a6)
/* @} */
-#define XBT_IN LOG1(xbt_log_priority_trace, ">> begin of %s", _XBT_GNUC_FUNCTION)
-#define XBT_IN1(fmt,a) LOG2(xbt_log_priority_trace, ">> begin of %s" fmt, _XBT_GNUC_FUNCTION, a)
-#define XBT_IN2(fmt,a,b) LOG3(xbt_log_priority_trace, ">> begin of %s" fmt, _XBT_GNUC_FUNCTION, a,b)
-#define XBT_IN3(fmt,a,b,c) LOG4(xbt_log_priority_trace, ">> begin of %s" fmt, _XBT_GNUC_FUNCTION, a,b,c)
-#define XBT_IN4(fmt,a,b,c,d) LOG5(xbt_log_priority_trace, ">> begin of %s" fmt, _XBT_GNUC_FUNCTION, a,b,c,d)
-#define XBT_OUT LOG1(xbt_log_priority_trace, "<< end of %s", _XBT_GNUC_FUNCTION)
+#define XBT_IN LOG1(xbt_log_priority_trace, ">> begin of %s", _XBT_FUNCTION)
+#define XBT_IN1(fmt,a) LOG2(xbt_log_priority_trace, ">> begin of %s" fmt, _XBT_FUNCTION, a)
+#define XBT_IN2(fmt,a,b) LOG3(xbt_log_priority_trace, ">> begin of %s" fmt, _XBT_FUNCTION, a,b)
+#define XBT_IN3(fmt,a,b,c) LOG4(xbt_log_priority_trace, ">> begin of %s" fmt, _XBT_FUNCTION, a,b,c)
+#define XBT_IN4(fmt,a,b,c,d) LOG5(xbt_log_priority_trace, ">> begin of %s" fmt, _XBT_FUNCTION, a,b,c,d)
+#define XBT_IN5(fmt,a,b,c,d,e) LOG6(xbt_log_priority_trace, ">> begin of %s" fmt, _XBT_FUNCTION, a,b,c,d,e)
+#define XBT_OUT LOG1(xbt_log_priority_trace, "<< end of %s", _XBT_FUNCTION)
#define XBT_HERE LOG0(xbt_log_priority_trace, "-- was here")
+SG_END_DECL()
#endif /* ! _XBT_LOG_H_ */