X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/672e33e4ec04de8fa4f69d453cf97de31478e721..61e155ac26178e40e46c04728680a1cbd426cad4:/src/xbt/log.c?ds=inline diff --git a/src/xbt/log.c b/src/xbt/log.c index 7d82b132c5..ce083fbbf8 100644 --- a/src/xbt/log.c +++ b/src/xbt/log.c @@ -280,11 +280,6 @@ void xbt_log_init(int *argc, char **argv) unsigned help_requested = 0; /* 1: logs; 2: categories */ int j = 1; - /* uncomment to set the LOG category to debug directly */ - // _XBT_LOGV(log).threshold = xbt_log_priority_debug; - - xbt_log_connect_categories(); - /* Set logs and init log submodule */ for (int i = 1; i < *argc; i++) { if (!strncmp(argv[i], "--log=", strlen("--log="))) { @@ -355,44 +350,45 @@ void _xbt_log_event_log(xbt_log_event_t ev, const char *fmt, ...) xbt_assert(ev->priority < sizeof(xbt_log_priority_names), "Priority %d is greater than the biggest allowed value", ev->priority); - do { + while (1) { xbt_log_appender_t appender = cat->appender; - if (!appender) - continue; /* No appender, try next */ - - xbt_assert(cat->layout, "No valid layout for the appender of category %s", cat->name); + if (appender != NULL) { + xbt_assert(cat->layout, "No valid layout for the appender of category %s", cat->name); - /* First, try with a static buffer */ - if (XBT_LOG_STATIC_BUFFER_SIZE) { + /* First, try with a static buffer */ + int done = 0; char buff[XBT_LOG_STATIC_BUFFER_SIZE]; - ev->buffer = buff; + ev->buffer = buff; ev->buffer_size = sizeof buff; va_start(ev->ap, fmt); - int done = cat->layout->do_layout(cat->layout, ev, fmt); + done = cat->layout->do_layout(cat->layout, ev, fmt); va_end(ev->ap); if (done) { appender->do_append(appender, buff); - continue; /* Ok, that worked: go next */ + } else { + + /* The static buffer was too small, use a dynamically expanded one */ + ev->buffer_size = XBT_LOG_DYNAMIC_BUFFER_SIZE; + ev->buffer = xbt_malloc(ev->buffer_size); + while (1) { + va_start(ev->ap, fmt); + done = cat->layout->do_layout(cat->layout, ev, fmt); + va_end(ev->ap); + if (done) + break; /* Got it */ + ev->buffer_size *= 2; + ev->buffer = xbt_realloc(ev->buffer, ev->buffer_size); + } + appender->do_append(appender, ev->buffer); + xbt_free(ev->buffer); } } - /* The static buffer was too small, use a dynamically expanded one */ - ev->buffer_size = XBT_LOG_DYNAMIC_BUFFER_SIZE; - ev->buffer = xbt_malloc(ev->buffer_size); - while (1) { - va_start(ev->ap, fmt); - int done = cat->layout->do_layout(cat->layout, ev, fmt); - va_end(ev->ap); - if (done) - break; /* Got it */ - ev->buffer_size *= 2; - ev->buffer = xbt_realloc(ev->buffer, ev->buffer_size); - } - appender->do_append(appender, ev->buffer); - xbt_free(ev->buffer); - - } while (cat->additivity && (cat = cat->parent, 1)); + if (!cat->additivity) + break; + cat = cat->parent; + } } #undef XBT_LOG_DYNAMIC_BUFFER_SIZE @@ -821,9 +817,10 @@ static void xbt_log_help(void) " -> warning: minor issue encountered\n" " -> error: issue encountered\n" " -> critical: major issue encountered\n" + " The default priority level is 'info'.\n" "\n" - " Format configuration: --log=CATEGORY_NAME.fmt:OPTIONS\n" - " OPTIONS may be:\n" + " Format configuration: --log=CATEGORY_NAME.fmt:FORMAT\n" + " FORMAT string may contain:\n" " -> %%%%: the %% char\n" " -> %%n: platform-dependent line separator (LOG4J compatible)\n" " -> %%e: plain old space (SimGrid extension)\n"