\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 */
typedef struct {
char *catname;
"CRITICAL"
};
-s_xbt_log_category_t XBT_PUBLIC_DATA _XBT_LOGV(XBT_LOG_ROOT_CAT) = {
+XBT_PUBLIC_DATA(s_xbt_log_category_t) _XBT_LOGV(XBT_LOG_ROOT_CAT) = {
0, 0, 0,
"root", xbt_log_priority_uninitialized, 0,
NULL, 0
/* create the default appender and install it in the root category,
which were already created (damnit. Too slow little beetle)*/
- xbt_log_default_appender =
- xbt_log_appender_file_new(xbt_log_layout_simple_new());
+ xbt_log_default_appender = xbt_log_appender_file_new(NULL);
+ 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;
/* Set logs and init log submodule */
for (i=1; i<*argc; i++){
!strncmp(argv[i],"--msg-log=",strlen("--msg-log=")) ||
!strncmp(argv[i],"--simix-log=",strlen("--simix-log=")) ||
!strncmp(argv[i],"--xbt-log=",strlen("--xbt-log="))){
-
+
+ if (strncmp(argv[i],"--log=",strlen("--log=")))
+ WARN2("Option %.*s is deprecated and will disapear in the future. Use --log instead.",
+ strchr(argv[i],'=')-argv[i],argv[i]);
+
opt=strchr(argv[i],'=');
opt++;
xbt_log_control_set(opt);
xbt_log_category_t child;
if (cat->appender) {
- if (cat->appender->layout) {
- if (cat->appender->layout->free_)
- cat->appender->layout->free_(cat->appender->layout);
- free(cat->appender->layout);
- }
if (cat->appender->free_)
cat->appender->free_(cat->appender);
free(cat->appender);
}
-
+ if (cat->layout) {
+ if (cat->layout->free_)
+ cat->layout->free_(cat->layout);
+ free(cat->layout);
+ }
for(child=cat->firstChild ; child != NULL; child = child->nextSibling)
log_cat_exit(child);
while(1) {
xbt_log_appender_t appender = cat->appender;
if (appender != NULL) {
- xbt_assert1(appender->layout,"No valid layout for the appender of category %s",cat->name);
- char *str= appender->layout->do_layout(appender->layout,
- ev, fmt);
+ xbt_assert1(cat->layout,"No valid layout for the appender of category %s",cat->name);
+ char *str= cat->layout->do_layout(cat->layout, ev, fmt);
appender->do_append(appender, str);
}
if (!cat->additivity)
if(category == &_XBT_LOGV(XBT_LOG_ROOT_CAT)){
category->threshold = xbt_log_priority_info;/* xbt_log_priority_debug*/;
category->appender = xbt_log_default_appender;
+ category->layout = xbt_log_default_layout;
} else {
if (!category->parent)
free(neweq);
} else {
char buff[512];
- snprintf(buff,min(512,eq - dot - 1),"%s",dot+1);
- THROW1(arg_error,0,"Unknown setting of the log category: %s",buff);
+ snprintf(buff,min(512,eq - dot),"%s",dot+1);
+ THROW1(arg_error,0,"Unknown setting of the log category: '%s'",buff);
}
set->catname=(char*)xbt_malloc(dot - name+1);
_free_setting);
/* split the string, and remove empty entries */
- set_strings=xbt_str_split(control_string," ");
+ set_strings=xbt_str_split_quoted(control_string);
+#ifdef FIXME
xbt_dynar_foreach(set_strings,cpt,str) {
xbt_str_trim(str,NULL);
if (str[0]=='\0') {
xbt_dynar_cursor_rm(set_strings,&cpt);
}
}
+#endif
if (xbt_dynar_length(set_strings) == 0) { /* vicious user! */
xbt_dynar_free(&set_strings);
}
void xbt_log_appender_set(xbt_log_category_t cat, xbt_log_appender_t app) {
+ if (cat->appender) {
+ if (cat->appender->free_)
+ cat->appender->free_(cat->appender);
+ free(cat->appender);
+ }
cat->appender = app;
}
+void xbt_log_layout_set(xbt_log_category_t cat, xbt_log_layout_t lay) {
+ if (!cat->appender) {
+ WARN1("No appender to category %s. Setting the file appender as default",
+ cat->name);
+ xbt_log_appender_set(cat,xbt_log_appender_file_new(NULL));
+ }
+ if (cat->layout) {
+ if (cat->layout->free_) {
+ cat->layout->free_(cat->layout);
+ free(cat->layout);
+ }
+ }
+ cat->layout = lay;
+}
void xbt_log_additivity_set(xbt_log_category_t cat, int additivity) {
cat->additivity = additivity;