X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/01dbe798813412d771e196798299c082bedc1dbb..f4225257bc8e26afe7338c3785cb284aa83a0cec:/src/xbt/log.c diff --git a/src/xbt/log.c b/src/xbt/log.c index 6969b593fd..094ed9f158 100644 --- a/src/xbt/log.c +++ b/src/xbt/log.c @@ -1,7 +1,6 @@ /* log - a generic logging facility in the spirit of log4j */ -/* Copyright (c) 2004-2017. 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. */ @@ -24,10 +23,17 @@ #include "xbt/sysdep.h" #include "xbt/xbt_os_thread.h" +#ifndef MIN +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#endif +#ifndef MAX +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#endif + int xbt_log_no_loc = 0; /* if set to true (with --log=no_loc), file localization will be omitted (for tesh tests) */ static xbt_os_mutex_t log_cat_init_mutex = NULL; -/** \addtogroup XBT_log +/** @addtogroup XBT_log * * For more information, please refer to @ref outcomes_logs Section. */ @@ -92,182 +98,6 @@ void xbt_log_preinit(void) log_cat_init_mutex = xbt_os_mutex_init(); } -static void xbt_log_connect_categories(void) -{ - /* Connect our log channels: that must be done manually under windows */ - /* Also permit that they are correctly listed by xbt_log_help_categories() */ - - /* xbt */ - XBT_LOG_CONNECT(xbt); - XBT_LOG_CONNECT(log); - XBT_LOG_CONNECT(module); - XBT_LOG_CONNECT(replay); - XBT_LOG_CONNECT(xbt_cfg); - XBT_LOG_CONNECT(xbt_dict); - XBT_LOG_CONNECT(xbt_dict_cursor); - XBT_LOG_CONNECT(xbt_dict_elm); - XBT_LOG_CONNECT(xbt_dyn); - XBT_LOG_CONNECT(xbt_ex); - XBT_LOG_CONNECT(xbt_automaton); - XBT_LOG_CONNECT(xbt_backtrace); - XBT_LOG_CONNECT(xbt_exception); - XBT_LOG_CONNECT(xbt_graph); - XBT_LOG_CONNECT(xbt_mallocator); - XBT_LOG_CONNECT(xbt_memory_map); - XBT_LOG_CONNECT(xbt_parmap); - XBT_LOG_CONNECT(xbt_sync); - XBT_LOG_CONNECT(xbt_sync_os); - -#ifdef simgrid_EXPORTS - /* The following categories are only defined in libsimgrid */ - - /* bindings */ -#if SIMGRID_HAVE_LUA - XBT_LOG_CONNECT(lua); - XBT_LOG_CONNECT(lua_host); - XBT_LOG_CONNECT(lua_platf); - XBT_LOG_CONNECT(lua_debug); -#endif - - /* instr */ - XBT_LOG_CONNECT(instr); - XBT_LOG_CONNECT(instr_api); - XBT_LOG_CONNECT(instr_config); - XBT_LOG_CONNECT(instr_msg); - XBT_LOG_CONNECT(instr_msg_process); - XBT_LOG_CONNECT(instr_paje_containers); - XBT_LOG_CONNECT(instr_paje_header); - XBT_LOG_CONNECT(instr_paje_trace); - XBT_LOG_CONNECT(instr_paje_types); - XBT_LOG_CONNECT(instr_paje_values); - XBT_LOG_CONNECT(instr_resource); - XBT_LOG_CONNECT(instr_routing); - XBT_LOG_CONNECT(instr_surf); - - /* jedule */ -#if SIMGRID_HAVE_JEDULE - XBT_LOG_CONNECT(jedule); - XBT_LOG_CONNECT(jed_sd); -#endif - - /* mc */ -#if SIMGRID_HAVE_MC - XBT_LOG_CONNECT(mc); - XBT_LOG_CONNECT(mc_checkpoint); - XBT_LOG_CONNECT(mc_comm_determinism); - XBT_LOG_CONNECT(mc_compare); - XBT_LOG_CONNECT(mc_dwarf); - XBT_LOG_CONNECT(mc_hash); - XBT_LOG_CONNECT(mc_liveness); - XBT_LOG_CONNECT(mc_memory); - XBT_LOG_CONNECT(mc_page_snapshot); - XBT_LOG_CONNECT(mc_request); - XBT_LOG_CONNECT(mc_safety); - XBT_LOG_CONNECT(mc_VisitedState); - XBT_LOG_CONNECT(mc_client); - XBT_LOG_CONNECT(mc_client_api); - XBT_LOG_CONNECT(mc_comm_pattern); - XBT_LOG_CONNECT(mc_process); - XBT_LOG_CONNECT(mc_protocol); - XBT_LOG_CONNECT(mc_Channel); - XBT_LOG_CONNECT(mc_ModelChecker); - XBT_LOG_CONNECT(mc_RegionSnaphot); - XBT_LOG_CONNECT(mc_Session); - XBT_LOG_CONNECT(mc_state); -#endif - XBT_LOG_CONNECT(mc_global); - XBT_LOG_CONNECT(mc_config); - XBT_LOG_CONNECT(mc_record); - - /* msg */ - XBT_LOG_CONNECT(msg); - XBT_LOG_CONNECT(msg_action); - XBT_LOG_CONNECT(msg_gos); - XBT_LOG_CONNECT(msg_io); - XBT_LOG_CONNECT(msg_kernel); - XBT_LOG_CONNECT(msg_mailbox); - XBT_LOG_CONNECT(msg_process); - XBT_LOG_CONNECT(msg_synchro); - XBT_LOG_CONNECT(msg_task); - XBT_LOG_CONNECT(msg_vm); - - /* s4u */ - XBT_LOG_CONNECT(s4u); - XBT_LOG_CONNECT(s4u_activity); - XBT_LOG_CONNECT(s4u_actor); - XBT_LOG_CONNECT(s4u_netzone); - XBT_LOG_CONNECT(s4u_channel); - XBT_LOG_CONNECT(s4u_comm); - XBT_LOG_CONNECT(s4u_file); - XBT_LOG_CONNECT(s4u_link); - XBT_LOG_CONNECT(s4u_vm); - - /* sg */ - XBT_LOG_CONNECT(sg_host); - - /* simdag */ - XBT_LOG_CONNECT(sd); - XBT_LOG_CONNECT(sd_daxparse); -#if HAVE_GRAPHVIZ - XBT_LOG_CONNECT(sd_dotparse); -#endif - XBT_LOG_CONNECT(sd_kernel); - XBT_LOG_CONNECT(sd_task); - - /* simix */ - XBT_LOG_CONNECT(simix); - XBT_LOG_CONNECT(simix_context); - XBT_LOG_CONNECT(simix_deployment); - XBT_LOG_CONNECT(simix_environment); - XBT_LOG_CONNECT(simix_host); - XBT_LOG_CONNECT(simix_io); - XBT_LOG_CONNECT(simix_kernel); - XBT_LOG_CONNECT(simix_mailbox); - XBT_LOG_CONNECT(simix_network); - XBT_LOG_CONNECT(simix_process); - XBT_LOG_CONNECT(simix_popping); - XBT_LOG_CONNECT(simix_synchro); - - /* smpi */ - /* SMPI categories are connected in smpi_global.c */ - - /* surf */ - XBT_LOG_CONNECT(surf); - XBT_LOG_CONNECT(surf_config); - XBT_LOG_CONNECT(surf_cpu); - XBT_LOG_CONNECT(surf_cpu_cas); - XBT_LOG_CONNECT(surf_cpu_ti); - XBT_LOG_CONNECT(surf_energy); - XBT_LOG_CONNECT(surf_file); - XBT_LOG_CONNECT(surf_kernel); - XBT_LOG_CONNECT(surf_lagrange); - XBT_LOG_CONNECT(surf_lagrange_dichotomy); - XBT_LOG_CONNECT(surf_maxmin); - XBT_LOG_CONNECT(surf_network); -#if SIMGRID_HAVE_NS3 - XBT_LOG_CONNECT(ns3); -#endif - XBT_LOG_CONNECT(surf_parse); - XBT_LOG_CONNECT(surf_plugin_load); - XBT_LOG_CONNECT(surf_route); - XBT_LOG_CONNECT(surf_routing_generic); - XBT_LOG_CONNECT(surf_route_cluster); - XBT_LOG_CONNECT(surf_route_cluster_torus); - XBT_LOG_CONNECT(surf_route_cluster_dragonfly); - XBT_LOG_CONNECT(surf_route_dijkstra); - XBT_LOG_CONNECT(surf_route_fat_tree); - XBT_LOG_CONNECT(surf_route_floyd); - XBT_LOG_CONNECT(surf_route_full); - XBT_LOG_CONNECT(surf_route_none); - XBT_LOG_CONNECT(surf_route_vivaldi); - XBT_LOG_CONNECT(surf_storage); - XBT_LOG_CONNECT(surf_trace); - XBT_LOG_CONNECT(surf_vm); - XBT_LOG_CONNECT(surf_host); - -#endif /* simgrid_EXPORTS */ -} - static void xbt_log_help(void); static void xbt_log_help_categories(void); @@ -279,17 +109,21 @@ void xbt_log_init(int *argc, char **argv) { unsigned help_requested = 0; /* 1: logs; 2: categories */ int j = 1; + int parse_args = 1; // Stop parsing the parameters once we found '--' /* Set logs and init log submodule */ for (int i = 1; i < *argc; i++) { - if (!strncmp(argv[i], "--log=", strlen("--log="))) { + if (!strcmp("--", argv[i])) { + parse_args = 0; + argv[j++] = argv[i]; // Keep the '--' for sg_config + } else if (parse_args && !strncmp(argv[i], "--log=", strlen("--log="))) { char* opt = strchr(argv[i], '='); opt++; xbt_log_control_set(opt); XBT_DEBUG("Did apply '%s' as log setting", opt); - } else if (!strcmp(argv[i], "--help-logs")) { + } else if (parse_args && !strcmp(argv[i], "--help-logs")) { help_requested |= 1U; - } else if (!strcmp(argv[i], "--help-log-categories")) { + } else if (parse_args && !strcmp(argv[i], "--help-log-categories")) { help_requested |= 2U; } else { argv[j++] = argv[i]; @@ -703,14 +537,14 @@ static xbt_log_category_t _xbt_log_cat_searchsub(xbt_log_category_t cat, char *n } /** - * \ingroup XBT_log - * \param control_string What to parse + * @ingroup XBT_log + * @param control_string What to parse * * Typically passed a command-line argument. The string has the syntax: * * ( [category] "." [keyword] ":" value (" ")... )... * - * where [category] is one the category names (see \ref XBT_log_cats for a complete list of the ones defined in the + * where [category] is one the category names (see @ref XBT_log_cats for a complete list of the ones defined in the * SimGrid library) and keyword is one of the following: * * - thres: category's threshold priority. Possible values: @@ -718,8 +552,8 @@ static xbt_log_category_t _xbt_log_cat_searchsub(xbt_log_category_t cat, char *n * - add or additivity: whether the logging actions must be passed to the parent category. * Possible values: 0, 1, no, yes, on, off. * Default value: yes. - * - fmt: the format to use. See \ref log_use_conf_fmt for more information. - * - app or appender: the appender to use. See \ref log_use_conf_app for more information. + * - fmt: the format to use. See @ref log_use_conf_fmt for more information. + * - app or appender: the appender to use. See @ref log_use_conf_app for more information. */ void xbt_log_control_set(const char *control_string) { @@ -838,7 +672,7 @@ static void xbt_log_help(void) "in 'l'etter)\n" " -> %%L: line number where the log event was raised (LOG4J compatible)\n" " -> %%M: function name (LOG4J compatible -- called method name here of course).\n" - " Defined only when using gcc because there is no __FUNCTION__ elsewhere.\n" + " Defined only when using gcc because there is no __func__ elsewhere.\n" "\n" " -> %%b: full backtrace (Called %%throwable in LOG4J). Defined only under windows or when using the " "GNU libc because\n"