Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Now that there is some mallocated space in the category architectures (the layouts...
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 6 Jun 2007 14:17:36 +0000 (14:17 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 6 Jun 2007 14:17:36 +0000 (14:17 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3568 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/xbt/log.c

index 332264e..baed936 100644 (file)
@@ -392,6 +392,7 @@ welcome here, too.
 \f
 xbt_log_appender_t xbt_log_default_appender = NULL; /* set in log_init */
 xbt_log_layout_t xbt_log_default_layout = NULL; /* set in log_init */
 \f
 xbt_log_appender_t xbt_log_default_appender = NULL; /* set in log_init */
 xbt_log_layout_t xbt_log_default_layout = NULL; /* set in log_init */
+int _log_usable = 0;
 
 typedef struct {
   char *catname;
 
 typedef struct {
   char *catname;
@@ -449,6 +450,7 @@ void xbt_log_init(int *argc,char **argv) {
        xbt_log_default_layout = xbt_log_layout_simple_new(NULL);
        _XBT_LOGV(XBT_LOG_ROOT_CAT).appender = xbt_log_default_appender;
        _XBT_LOGV(XBT_LOG_ROOT_CAT).layout = xbt_log_default_layout;
        xbt_log_default_layout = xbt_log_layout_simple_new(NULL);
        _XBT_LOGV(XBT_LOG_ROOT_CAT).appender = xbt_log_default_appender;
        _XBT_LOGV(XBT_LOG_ROOT_CAT).layout = xbt_log_default_layout;
+       _log_usable = 1;   
 
        /* Set logs and init log submodule */
        for (i=1; i<*argc; i++){
 
        /* Set logs and init log submodule */
        for (i=1; i<*argc; i++){
@@ -502,13 +504,21 @@ void xbt_log_exit(void) {
   VERB0("Exiting log");
   xbt_dynar_free(&xbt_log_settings);
   log_cat_exit(&_XBT_LOGV(XBT_LOG_ROOT_CAT));
   VERB0("Exiting log");
   xbt_dynar_free(&xbt_log_settings);
   log_cat_exit(&_XBT_LOGV(XBT_LOG_ROOT_CAT));
-  VERB0("Exited log");
+  _log_usable = 0;
 }
 
 void _xbt_log_event_log( xbt_log_event_t ev, const char *fmt, ...) {
   
   xbt_log_category_t cat = ev->cat;
 }
 
 void _xbt_log_event_log( xbt_log_event_t ev, const char *fmt, ...) {
   
   xbt_log_category_t cat = ev->cat;
-  
+  if (!_log_usable) {
+     fprintf(stderr,"XXXXXXXXXXXXXXXXXXX\nXXX Warning, logs not usable here. Either before xbt_init() or after xbt_exit().\nXXXXXXXXXXXXXXXXXXX\n");
+     va_start(ev->ap, fmt);
+     vfprintf(stderr,fmt,ev->ap);
+     va_end(ev->ap);
+     xbt_backtrace_display();
+     return;
+  }
+   
   va_start(ev->ap, fmt);
   while(1) {
     xbt_log_appender_t appender = cat->appender;
   va_start(ev->ap, fmt);
   while(1) {
     xbt_log_appender_t appender = cat->appender;