/* log - a generic logging facility in the spirit of log4j */
-/* Copyright (c) 2004-2015. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2004-2018. The SimGrid Team. All rights reserved. */
/* 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. */
/** \defgroup XBT_log_cats Existing log categories
* \ingroup XBT_log
- * \brief (automatically extracted)
+ * \brief (automatically extracted)
*
* This is the list of all existing log categories in SimGrid.
* This list is automatically extracted from the source code by the tools/doxygen/xbt_log_extract_hierarchy.pl utility.
*
- * It should thus contain every categories that are defined in the SimGrid library.
+ * It should thus contain every categories that are defined in the SimGrid library.
* If you want to see the one defined in your code in addition, provide `--help-logs` on the command line of your simulator.
*/
printf function. Useful to debug the logging facilities themselves, or to not make source analysis tools mad */
//#define XBT_LOG_MAYDAY
-#ifndef _XBT_LOG_H_
-#define _XBT_LOG_H_
+#ifndef XBT_LOG_H
+#define XBT_LOG_H
#include "xbt/misc.h"
#include <stdarg.h>
#define _XBT_LOGV_CTOR(cat) _XBT_LOG_CONCAT2(_XBT_LOGV(cat), __constructor__)
#define _XBT_LOG_CONCAT(x, y) x ## y
#define _XBT_LOG_CONCAT2(x, y) _XBT_LOG_CONCAT(x, y)
-/* Apparently, constructor priorities are not supported by gcc on Macs */
-#if defined(__GNUC__) && defined(__APPLE__)
-# define _XBT_LOGV_CTOR_ATTRIBUTE
-#else
-# define _XBT_LOGV_CTOR_ATTRIBUTE _XBT_GNUC_CONSTRUCTOR(600)
-#endif
/* The root of the category hierarchy. */
#define XBT_LOG_ROOT_CAT root
/* XBT_LOG_NEW_SUBCATEGORY_helper:
* Implementation of XBT_LOG_NEW_SUBCATEGORY, which must declare "extern parent" in addition to avoid an extra
* declaration of root when XBT_LOG_NEW_SUBCATEGORY is called by XBT_LOG_NEW_CATEGORY */
-#define XBT_LOG_NEW_SUBCATEGORY_helper(catName, parent, desc) \
- SG_BEGIN_DECL() \
- extern void _XBT_LOGV_CTOR(catName)(void) _XBT_LOGV_CTOR_ATTRIBUTE; \
- void _XBT_LOGV_CTOR(catName)(void) \
- { \
- XBT_LOG_EXTERNAL_CATEGORY(catName); \
- if (!_XBT_LOGV(catName).initialized) { \
- _xbt_log_cat_init(&_XBT_LOGV(catName), xbt_log_priority_uninitialized); \
- } \
- } \
- SG_END_DECL() \
- XBT_EXPORT_NO_IMPORT(s_xbt_log_category_t) _XBT_LOGV(catName) = { \
- &_XBT_LOGV(parent), \
- NULL /* firstChild */, \
- NULL /* nextSibling */, \
- #catName, \
- desc, \
- 0 /*initialized */, \
- xbt_log_priority_uninitialized /* threshold */, \
- 1 /* isThreshInherited */, \
- NULL /* appender */, \
- NULL /* layout */, \
- 1 /* additivity */ \
+#define XBT_LOG_NEW_SUBCATEGORY_helper(catName, parent, desc) \
+ SG_BEGIN_DECL() \
+ extern void _XBT_LOGV_CTOR(catName)(void) XBT_ATTRIB_CONSTRUCTOR(600); \
+ void _XBT_LOGV_CTOR(catName)(void) \
+ { \
+ XBT_LOG_EXTERNAL_CATEGORY(catName); \
+ if (!_XBT_LOGV(catName).initialized) { \
+ _xbt_log_cat_init(&_XBT_LOGV(catName), xbt_log_priority_uninitialized); \
+ } \
+ } \
+ SG_END_DECL() \
+ XBT_EXPORT_NO_IMPORT(s_xbt_log_category_t) \
+ _XBT_LOGV(catName) = { \
+ &_XBT_LOGV(parent), \
+ NULL /* firstChild */, \
+ NULL /* nextSibling */, \
+ #catName, \
+ desc, \
+ 0 /*initialized */, \
+ xbt_log_priority_uninitialized /* threshold */, \
+ 1 /* isThreshInherited */, \
+ NULL /* appender */, \
+ NULL /* layout */, \
+ 1 /* additivity */ \
}
/**
* \param desc string describing the purpose of this category
* \hideinitializer
*
- * Defines a new subcategory of the parent.
+ * Defines a new subcategory of the parent.
*/
#define XBT_LOG_NEW_SUBCATEGORY(catName, parent, desc) \
XBT_LOG_EXTERNAL_CATEGORY(parent); \
XBT_LOG_NEW_SUBCATEGORY_helper(catName, parent, desc) \
/**
- * \ingroup XBT_log
+ * \ingroup XBT_log
* \param catName name of new category
* \param desc string describing the purpose of this category
* \hideinitializer
XBT_LOG_NEW_SUBCATEGORY_helper(catName, XBT_LOG_ROOT_CAT, desc)
/**
- * \ingroup XBT_log
+ * \ingroup XBT_log
* \param cname name of the cat
* \hideinitializer
*
#if defined(XBT_LOG_MAYDAY) /*|| defined (NLOG) * turning logging off */
# define XBT_LOG_DEFAULT_CATEGORY(cname)
#else
-# define XBT_LOG_DEFAULT_CATEGORY(cname) \
- static xbt_log_category_t _XBT_LOGV(default) XBT_ATTRIB_UNUSED = &_XBT_LOGV(cname)
+#define XBT_LOG_DEFAULT_CATEGORY(cname) \
+ XBT_ATTRIB_UNUSED static xbt_log_category_t _XBT_LOGV(default) = &_XBT_LOGV(cname)
#endif
/**
- * \ingroup XBT_log
+ * \ingroup XBT_log
* \param cname name of the cat
* \param desc string describing the purpose of this category
* \hideinitializer
XBT_LOG_DEFAULT_CATEGORY(cname)
/**
- * \ingroup XBT_log
+ * \ingroup XBT_log
* \param cname name of the cat
* \param parent name of the parent
* \param desc string describing the purpose of this category
XBT_LOG_DEFAULT_CATEGORY(cname)
/**
- * \ingroup XBT_log
+ * \ingroup XBT_log
* \param cname name of the cat
* \hideinitializer
*
XBT_PUBLIC(void) xbt_log_threshold_set(xbt_log_category_t cat, e_xbt_log_priority_t thresholdPriority);
/**
- * \ingroup XBT_log_implem
+ * \ingroup XBT_log_implem
* \param cat the category (not only its name, but the variable)
* \param app the appender
*
*/
XBT_PUBLIC(void) xbt_log_appender_set(xbt_log_category_t cat, xbt_log_appender_t app);
/**
- * \ingroup XBT_log_implem
+ * \ingroup XBT_log_implem
* \param cat the category (not only its name, but the variable)
* \param lay the layout
*
XBT_PUBLIC(void) xbt_log_layout_set(xbt_log_category_t cat, xbt_log_layout_t lay);
/**
- * \ingroup XBT_log_implem
+ * \ingroup XBT_log_implem
* \param cat the category (not only its name, but the variable)
* \param additivity whether logging actions must be passed to parent.
*
*/
XBT_PUBLIC(void) xbt_log_additivity_set(xbt_log_category_t cat, int additivity);
-/** @brief create a new simple layout
+/** @brief create a new simple layout
*
* This layout is not as flexible as the pattern one
*/
/* ********************************** */
/* Functions that you shouldn't call */
/* ********************************** */
+XBT_PUBLIC(void) xbt_log_init(int *argc, char **argv);
XBT_PUBLIC(void) _xbt_log_event_log(xbt_log_event_t ev, const char *fmt, ...) XBT_ATTRIB_PRINTF(2, 3);
XBT_PUBLIC(int) _xbt_log_cat_init(xbt_log_category_t category, e_xbt_log_priority_t priority);
/* ********************** */
/**
- * \ingroup XBT_log
+ * \ingroup XBT_log
* \param catName name of the category
* \param priority minimal priority to be enabled to return true (must be #e_xbt_log_priority_t)
* \hideinitializer