X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/64ea8dcf1daac53da58d65aa91b7452aae8b13b7..d1e3da05d585666774f9b315252f29e842c033ed:/include/xbt/log.h diff --git a/include/xbt/log.h b/include/xbt/log.h index 93dabefe76..4edbfed1a4 100644 --- a/include/xbt/log.h +++ b/include/xbt/log.h @@ -1,7 +1,6 @@ /* 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. */ @@ -13,22 +12,21 @@ /** \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. * - * You can thus be certain that it is uptodate, but it may somehow lack a final manual touch. - * Anyway, nothing's perfect ;) + * 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. */ /* 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 + 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 @@ -88,12 +86,6 @@ typedef enum { #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 @@ -120,29 +112,30 @@ typedef enum { /* 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 */ \ } /** @@ -152,14 +145,14 @@ typedef enum { * \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 @@ -170,7 +163,7 @@ typedef enum { XBT_LOG_NEW_SUBCATEGORY_helper(catName, XBT_LOG_ROOT_CAT, desc) /** - * \ingroup XBT_log + * \ingroup XBT_log * \param cname name of the cat * \hideinitializer * @@ -180,12 +173,12 @@ typedef enum { #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 @@ -198,7 +191,7 @@ typedef enum { 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 @@ -212,7 +205,7 @@ typedef enum { XBT_LOG_DEFAULT_CATEGORY(cname) /** - * \ingroup XBT_log + * \ingroup XBT_log * \param cname name of the cat * \hideinitializer * @@ -285,7 +278,7 @@ struct xbt_log_event_s { 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 * @@ -293,7 +286,7 @@ XBT_PUBLIC(void) xbt_log_threshold_set(xbt_log_category_t cat, e_xbt_log_priorit */ 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 * @@ -302,7 +295,7 @@ XBT_PUBLIC(void) xbt_log_appender_set(xbt_log_category_t cat, xbt_log_appender_t 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. * @@ -311,7 +304,7 @@ XBT_PUBLIC(void) xbt_log_layout_set(xbt_log_category_t cat, xbt_log_layout_t lay */ 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 */ @@ -323,6 +316,7 @@ XBT_PUBLIC(xbt_log_appender_t) xbt_log_appender2_file_new(char *arg,int roll); /* ********************************** */ /* 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); @@ -344,7 +338,7 @@ extern xbt_log_layout_t xbt_log_default_layout; /* ********************** */ /** - * \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