X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/edde8f7fbc1b74a81551bf9eb7bac1935b999296..95126a283c054273ca881e2f1d9fc5febb22742c:/src/xbt/xbt_log_layout_format.c diff --git a/src/xbt/xbt_log_layout_format.c b/src/xbt/xbt_log_layout_format.c index d09a2fe417..7e2c46833c 100644 --- a/src/xbt/xbt_log_layout_format.c +++ b/src/xbt/xbt_log_layout_format.c @@ -1,20 +1,25 @@ /* layout_simple - a dumb log layout */ -/* Copyright (c) 2007-2011. The SimGrid Team. +/* Copyright (c) 2007-2014. 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. */ -#include "portable.h" /* execinfo when available */ -#include "xbt/ex_interface.h" +#include "src/internal_config.h" /* execinfo when available */ +#include "xbt/synchro_core.h" /* xbt_thread_self_name */ +#include "src/xbt/ex_interface.h" #include "xbt/sysdep.h" #include "xbt/strbuff.h" -#include "xbt/log_private.h" -#include "gras/virtu.h" /* gras_os_myname (KILLME) */ -#include "xbt/synchro.h" /* xbt_thread_self_name */ +#include "src/xbt/log_private.h" +#include "simgrid/simix.h" /* SIMIX_host_self_get_name */ +#include "surf/surf.h" #include +#if HAVE_EXECINFO_H +# include /* Function backtrace */ +#endif + extern const char *xbt_log_priority_names[8]; static double format_begin_of_time = -1; @@ -64,13 +69,15 @@ static double format_begin_of_time = -1; check_overflow(len); \ } else (void)0 -#define show_string(data) show_it(data, "s") +#define show_string(data) \ + if (1) { \ + const char *show_string_data = (data); \ + show_it(show_string_data ? show_string_data : "(null)", "s"); \ + } else (void)0 #define show_int(data) show_it(data, "d") #define show_double(data) show_it(data, "f") -static int xbt_log_layout_format_doit(xbt_log_layout_t l, - xbt_log_event_t ev, - const char *msg_fmt) +static int xbt_log_layout_format_doit(xbt_log_layout_t l, xbt_log_event_t ev, const char *msg_fmt) { char *p = ev->buffer; int rem_size = ev->buffer_size; @@ -84,7 +91,8 @@ static int xbt_log_layout_format_doit(xbt_log_layout_t l, handle_modifier: switch (*q) { case '\0': - xbt_die("Layout format (%s) ending with %%\n", (char *)l->data); + fprintf(stderr, "Layout format (%s) ending with %%\n", (char *)l->data); + xbt_abort(); case '%': *p = '%'; check_overflow(1); @@ -113,18 +121,17 @@ static int xbt_log_layout_format_doit(xbt_log_layout_t l, length = strtol(q, &q, 10); goto handle_modifier; case 'c': /* category name; LOG4J compliant - should accept a precision postfix to show the - hierarchy */ + should accept a precision postfix to show the hierarchy */ show_string(ev->cat->name); break; case 'p': /* priority name; LOG4J compliant */ show_string(xbt_log_priority_names[ev->priority]); break; case 'h': /* host name; SimGrid extension */ - show_string(gras_os_myname()); + show_string(SIMIX_host_self_get_name()); break; case 't': /* thread name; LOG4J compliant */ - show_string(xbt_thread_self_name()); + show_string(SIMIX_process_self_get_name()); break; case 'P': /* process name; SimGrid extension */ show_string(xbt_procname()); @@ -150,14 +157,13 @@ static int xbt_log_layout_format_doit(xbt_log_layout_t l, break; case 'b': /* backtrace; called %throwable in LOG4J */ case 'B': /* short backtrace; called %throwable{short} in LOG4J */ -#if defined(HAVE_EXECINFO_H) && defined(HAVE_POPEN) && defined(ADDR2LINE) +#if HAVE_BACKTRACE && HAVE_EXECINFO_H && HAVE_POPEN && defined(ADDR2LINE) { xbt_ex_t e; e.used = backtrace((void **) e.bt, XBT_BACKTRACE_SIZE); e.bt_strings = NULL; e.msg = NULL; - e.remote = 0; xbt_ex_setup_backtrace(&e); if (*q == 'B') { show_string(e.bt_strings[1] + 8); @@ -179,10 +185,10 @@ static int xbt_log_layout_format_doit(xbt_log_layout_t l, #endif break; case 'd': /* date; LOG4J compliant */ - show_double(gras_os_time()); + show_double(surf_get_clock()); break; case 'r': /* application age; LOG4J compliant */ - show_double(gras_os_time() - format_begin_of_time); + show_double(surf_get_clock() - format_begin_of_time); break; case 'm': { /* user-provided message; LOG4J compliant */ int len, sz; @@ -192,7 +198,8 @@ static int xbt_log_layout_format_doit(xbt_log_layout_t l, break; } default: - xbt_die(ERRMSG, *q, (char *)l->data); + fprintf(stderr, ERRMSG, *q, (char *)l->data); + xbt_abort(); } } else { *p = *q; @@ -217,7 +224,7 @@ xbt_log_layout_t xbt_log_layout_format_new(char *arg) res->data = xbt_strdup((char *) arg); if (format_begin_of_time < 0) - format_begin_of_time = gras_os_time(); + format_begin_of_time = surf_get_clock(); return res; }