X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Flogging.c;h=cf5c9955376c330c8233b86de4f389b2da62d148;hb=9b24b6aa4258079f2b59fa156dd3e070969f6f2a;hp=371bc596048295f7a66c732ff3237c38e00aefef;hpb=373c938b7b096e1bcb09623c56b7c82b3b7a6744;p=babeltrace.git diff --git a/lib/logging.c b/lib/logging.c index 371bc596..cf5c9955 100644 --- a/lib/logging.c +++ b/lib/logging.c @@ -1,5 +1,5 @@ /* - * Copyright 2017 Philippe Proulx + * Copyright 2017-2018 Philippe Proulx * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -27,8 +27,25 @@ #define BT_LOG_TAG "LIB" #include +#ifdef BT_DEV_MODE +/* + * Default log level is FATAL in developer mode because fatal logging is + * our way to communicate an unsatisfied precondition and the details. + */ +# define DEFAULT_LOG_LEVEL BT_LOG_FATAL +#else +/* + * In non-developer mode, use NONE by default: we don't to print logging + * statements for any executable which links with the library. The + * executable should call bt_logging_set_global_level() or the + * executable's user should set the BABELTRACE_LOGGING_GLOBAL_LEVEL + * environment variable. + */ +# define DEFAULT_LOG_LEVEL BT_LOG_NONE +#endif /* BT_DEV_MODE */ + BT_HIDDEN -int bt_lib_log_level = BT_LOG_NONE; +int bt_lib_log_level = DEFAULT_LOG_LEVEL; enum bt_logging_level bt_logging_get_minimal_level(void) { @@ -42,6 +59,17 @@ enum bt_logging_level bt_logging_get_global_level(void) void bt_logging_set_global_level(enum bt_logging_level log_level) { +#ifdef BT_DEV_MODE + /* + * Do not allow the library's log level to fall to NONE when in + * developer mode because fatal logging is our way to + * communicate an unsatisfied precondition and the details. + */ + if (log_level == BT_LOG_NONE) { + log_level = BT_LOG_FATAL; + } +#endif + bt_lib_log_level = log_level; }